微信支付失败通知原因的问题

查看: 2429|回复: 9
最后登录注册时间阅读权限50精华0帖子
咕噜, 积分 824, 距离下一级还需 376 积分
性别男幸福币0 经验733 帖子
我用的5.4版本的微信支付,它提示我版本不够,让我升级到5.0。。。但我是5.4的版本。问微信客服,他让我先卸载,然后升级到5.3的版本。但是5.3的还是不行,请客服给我解释一下,这是为什么
09:35 上传
09:36 上传
最后登录注册时间阅读权限50精华0帖子
咕噜, 积分 824, 距离下一级还需 376 积分
性别男幸福币0 经验733 帖子
版主人呢?
最后登录注册时间阅读权限90精华1帖子
QQ斗士, 积分 39416, 距离下一级还需 584 积分
性别女幸福币0 经验30891 帖子
这个微信活动,每个帐号只能参加一次,楼主有没以前参加过?
最后登录注册时间阅读权限50精华0帖子
咕噜, 积分 824, 距离下一级还需 376 积分
性别男幸福币0 经验733 帖子
只有我一个人出了这种事???????
最后登录注册时间阅读权限90精华1帖子
QQ斗士, 积分 39416, 距离下一级还需 584 积分
性别女幸福币0 经验30891 帖子
??深蓝剪出 发表于
只有我一个人出了这种事???????
目前没有接到其他玩家的反馈
我和你的版本相同,也是5.3.1,正常支付了
最后登录注册时间阅读权限50精华0帖子
咕噜, 积分 824, 距离下一级还需 376 积分
性别男幸福币0 经验733 帖子
初夏の蔷薇 发表于
这个微信活动,每个帐号只能参加一次,楼主有没以前参加过?
没有参加过,我敢肯定,而且现在的情况和参没参加没关系
最后登录注册时间阅读权限50精华0帖子
咕噜, 积分 824, 距离下一级还需 376 积分
性别男幸福币0 经验733 帖子
初夏の蔷薇 发表于
目前没有接到其他玩家的反馈
我和你的版本相同,也是5.3.1,正常支付了
我用别的帐号试过,也不行
最后登录注册时间阅读权限90精华1帖子
QQ斗士, 积分 39416, 距离下一级还需 584 积分
性别女幸福币0 经验30891 帖子
??深蓝剪出 发表于
没有参加过,我敢肯定,而且现在的情况和参没参加没关系
恩,帮你咨询咨询
最后登录注册时间阅读权限90精华1帖子
QQ斗士, 积分 39416, 距离下一级还需 584 积分
性别女幸福币0 经验30891 帖子
??深蓝剪出 发表于
我用别的帐号试过,也不行
是同一部手机吧,有没试试换个手机?把你的卡装在同事有微信的手机上试一下,会不会是软件的问题
最后登录注册时间阅读权限30精华0帖子
QQ土人, 积分 204, 距离下一级还需 396 积分
性别男幸福币0 经验191 帖子
初夏の蔷薇 发表于
是同一部手机吧,有没试试换个手机?把你的卡装在同事有微信的手机上试一下,会不会是软件的问题
偷偷的告诉你吧 .你们程序员和微软有仇
WP 系统的 就是支付不了 我的也 一样
Powered by微信支付常见银行限额如下:...
1、微信支付用户使用面对面收钱付款给收款方单笔单日限额为15000元,单日收款限额为5万元;2、未添加过中国大陆地区银行卡的用户付款限额为单笔单日1000元,单月500元;收款限额为单日单笔500元,单月累计收款限额为5000元(超过收款限额后若想继续使用面对面收钱功能,...
支持多人及多次扫码。...
长期有效。...
支持零钱与储蓄卡付款。...
扫码付款后资金将即时转入收款方的零钱账户。温馨提示:为了您的资金安全,建议当面交易,确认身份后再支付。...
1、打开微信扫一扫;2、扫描收款人的收款二维码;3、填写要付款的金额(如果收款方已经填写了金额,那么付款方只需要确认即可);4、进入支付页面完成付款。...
收款人进入收钱页面时生成的二维码是不定金额的,展示二维码由付款人扫码后去填写要付的金额;但如果收款人点击右上角,设置了金额,那么生成的二维码就是固定金额的。...
1、收款方进入微信首页,点击右上角“+”=》选择“收付款”=》“我要收款”;2、生成二维码(点击右上角“设置金额”可以编辑二维码金额,如果收款方填写了金额,则付款方就不需要填写),展示二维码给付款方;3、付款方扫描二维码进行付款。注:若收款方看到交易为“支...
Android、iPhone微信5.4及以上版本支持面对面收钱功能。...
任何微信用户都可以快速地给你转账。...
面对面收钱是微信用户之间通过扫描二维码完成转账的功能。...
不可以。...
收款方收到消息后,可以直接选择退回,资金将原路退回。注:原路退回是指若使用零钱进行转账付款,则资金退回零钱(实时到账);若使用银行卡进行转账付款,则资金退回付款银行卡(到账时间为:1-3个工作日)。...
收到转账消息后,请点击消息,会进入一个升级页面,按照提示升级后即可收款。...
如果收款方使用的手机操作系统所支持的微信,暂未发布支持转账功能的版本,付款方会收到无法付款的提示。...
收款方超时未收取的资金或拒收的资金都将原路退回,退回到账时间:零钱实时到账,储蓄卡1-3个工作日到账。注:原路退回是指若使用零钱进行转账付款,则资金退回零钱;若使用银行卡进行转账付款,则资金退回付款银行卡。...
转账成功后,收款方在与付款方好友的微信对话框里会收到一条对方发来的橙色小框转账消息,收款方只需要点击消息确认收钱。...
收款方需要在1天内收取付款方付出的钱。超过1天未收取,资金将会原路退回。注:原路退回是指若使用零钱进行转账付款,则资金退回零钱(实时到账);若使用银行卡进行转账付款,则资金退回付款银行卡(到账时间为:1-3个工作日)。...
这种情况下,收款方也许在TA的联系人列表中删除了你,或者将你加入了黑名单,请核实后再试。...
&共136条/7页& 0)window.location.href='/news/list-621-{destoon_page}.html'.replace(/\{destoon_page\}/, Dd('destoon_pageno').value);"/>微信支付App支付的问题
调用统一下单接口的时候出现“支付权限检查失败”的错误。
这个实在APP支付时调用出现的。
公众号支付时调用时没问题的。
这个是什么原因?
还需要哪里要设置吗?
楼主你的问题解决了吗
--- 共有 2 条评论 ---
我用的微信开放平台也是“支付权限检查失败”,但是可以获得token,为啥还是没有权限呢。商户端里面内容都申请成功了
我最后是发邮件给微信的技术支持了,就是不能调用!其他没什么。
我都不知道为什么不能调用,tmd也不说理由。
如果你是要做APP支付,还是用开放平台的微信APP支付吧!公众号的APP支付不能用,而且这两个不一样!
检查下支付授权目录
--- 共有 1 条评论 ---
大哥,微信网页支付才有授权目录,APP支付哪来的目录?
兄弟,问题解决了么,我也遇到这样的问题了
--- 共有 8 条评论 ---
JSAPI的是公众号,但, 貌似APP的支付方式,需要在开发平台中创建对应的应用
: 好吧,那就是说你生成支付链接给app端去调用是吧。我看sdk要先注册商户ID,然后才可以支付的。意思就是说app不能用公众号的账户去支付了。
: 我没有使用微信提供的sdk(哈哈,我还真没留意,微信有提供sdk),我是写支付接口提供给前端调用的。跟平常对接一样,访问微信提供的地址
我想问下你app是用的微信提供的sdk支付的吗,我现在想用app嵌入h5页面的方式去调用公众号支付(这么折腾是由于客户需求),就像公众号里面的h5页面js调用微信支付一样。
: 解决了,我这边的原因是:APP支付有一个账号,JSAPI支付有一个账号,我以为是共用的,因此导致了这个问题
同样的问题,求解啊,我没有注册微信公众号,不能用这个接口吗Android(1)
开发步骤:
1、到微信开放平台,登记开发应用提交相应的材料(1、提交的图片有28*28px
png 大小不超过300kb的应用图标 2、高清应用图标108*108px png格式 大小不超过300kb的应用图标),将该应用提交审核,审核大约是一天左右。还要给你的应用做签名,&运行到手机上对你的qpp进行应用签名,也就是让微信认识这个app。微信支付还要另外在审核提交的材料其中有图片(商品详情图片,版权图片,支付图片相应的规格参考微信平台)这个审核估计得两三天。
2、下载微信开发工具包集成到开发环境:&这个包最好是最新版的,因为之后的签名版本之间存在差别,(注意如果有做混淆代码在混淆文件中加入下面配置)
-keep&class&com.tencent.mm.sdk.**&{&*;}
3、使用开发工具进行调起微信登陆或微信支付首先要注册IWXAPI&
// IWXAPI 是第三方app和微信通信的openapi接口
private IWXAPI api;
// 通过WXAPIFactory工厂,获取IWXAPI的实例
api= WXAPIFactory.createWXAPI(this, Constants.APP_ID);
api.registerApp(Constants.APP_ID);
&微信登陆时直接
api.handleIntent(getIntent(), this);实现IWXAPIEventHandler回调
微信支付是:
PayReq request = new PayReq();
WXCreateOrder.BodyEntity body = result.getBody();
request.appId = body.getAppid();
request.partnerId=body.getPartnerid();
request.prepayId= body.getPrepayid();
request.packageValue = body.getPackageX();
request.nonceStr=body.getNoncestr();
request.timeStamp=body.getTimestamp();
request.sign=body.getPaySign();
&直接调起支付连链接地址都不用你管这里面7个参数分别是应用id,合作商户id,预支付id,扩展字段,随机字符串,时间戳,签名。
前6个参数通常不会有问题,第七个参数是最容易出现问题,它签名规则是1.参数名按ASCII码顺序排列拼接商户key值 2.区分大小写。
app调起微信支付的时候是只要返回错误信息,也没有打log,所以是很难判断你是哪里出错,而且测试时用的debug.keystore 和打包后的keystore不一样。
所以相当于你每测试一次就打包一次及其麻烦。印象中是可以配置,所以抱着试试看到想法到网上查了相关资料发现是可以在build.gradle里进行配置配置如下:
signingConfigs{
releaseConfigs{
storeFile file(&/awork/workpace/user/kestory.jks&)
storePassword &hlj66&
&keyAlias &hlj&
&keyPassword &hlj666666&
debugConfigs{
storeFile file(&/awork/workpace/user/kestory.jks&)
storePassword &hlj66&
&keyAlias &hlj&
&keyPassword &hlj666666&
buildTypes {
signingConfig signingConfigs.debugConfigs
buildConfigField &boolean&, &ISDEBUG&, &true&
}这样你的测试环境和正式打包的应用签名是一致的,也就是前面所说的微信才会认识这个app,这是一个坑
遇到的一些问题:
1、当初应用签名,后来忘记签名的密码,所以我重新修改了开放平台上的应用签名,重新测试发现连微信登陆都调不起,我后来查找了相关资料发现,当你使用微信登陆或分享的时候,微信的客户端会存储你的app在微信开放平台上配置的包名跟应用签名,如果你在自己的应用里面第一次使用微信登陆或分享后,你的应用相关的信息就会被微信客户端记录了,这时候你再换一个签名文件更改你的应用签名,点微信登陆就会出现没反应,并且友盟的那些回调都没有调用的情况,在更改签名后如果发现自己所有的配置和代码都没有问题的话可以删除手机上的微信。然后重新安装应用即可(网摘)
2、之前所说的应用的keystore一定是要微信认识的,一定要确认好
3、配置工程问题:必须要有wxapi这个包名(而且必须在你注册的微信应用包名下,比如你注册的包名是com.rs.user,那么wxapi,必须是com.rs.user.wxapi),同时必须有WXPayEntryActivity这个类名,否则无法调起微信支付,(开发文档没有标注,废了好大周章).不只是这个还有微信登陆也是名称是WXEntryActivity,也是在wxapi下。此外一定要记得在AndroidManifest.xml下配置该Activity
&android:name=&.wxapi.WXPayEntryActivity&
&android:exported=&true&
&android:launchMode=&singleTop& /&
&4、WXPayEntryActivity监听微信支付的结果你在这里注册api,轮询监听支付结果:
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
&builder.setTitle(R.string.app_tip);
&builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
&builder.show();
5、当一直返回-1(可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等),当你确定你的应用签名无误,应用id存在,并且可用。这个时候你可能就会怀疑后端给你返回的是否有误。我之前一直尝试自己去做签名验证,后来真的可以了。其实这样是没有必要的,如果你怀疑后端给你的数据有误微信开放平台上是有在线签名验证的&&
另外说一下它的大体流程:
用户在app端选择商品下单点击去支付----&app把商品信息传给后端-------&后端对信息进行加密(规则微信开放平台上)发给微信,获取预支付id-------&因为客户端调起微信支付需要7个参数,服务端做好再一次签名传给app(这个签名放在服务端是比较安全的,它的签名包括了app端看不到商户key)--------》app获取参数调起微信支付------》微信平台上的事,app这里负责监听支付结果结束后自动返回该app页面
注:下划线表示可以让设计先去把需要的图片做好,到申请时可以直接用
& & & & 申请涉及商户账目所以最好是给相关人员去申请,涉及到类似应用签名的技术配合即可
& & & & 审核也需要时间,所以最好提前申请&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1451次
排名:千里之外
原创:10篇  现在,越来越多公司,选择借微信的势来发展自己的平台,进入工作没多久,我也被告知了要对接微信支付的需求。原本以为这样的对接,跟着文档走,应该没多大的难度的,可是后来,我才发现,原来我太天真了。在此,留下印记,说说我在微信支付上面遇到的那些问题。
& & &1、关于微信支付
& & &首先说下微信支付。随着微信的红火,微信支付在第三方支付也占了一大块地盘,越来越多的公司在自己的APP或者网站上集成了微信支付。从微信支付的官网&可以看出,微信支付主要分为四大块,公众号支付、APP支付、扫码支付(网站)、刷卡支付。工作上,我接触到了前三种,遇到了各种各样的问题。
& & &2、关于官方文档
& & &对于开发者来说,对接这种第三方支付,看其官方文档尤其重要。开发者可以通过官网,查到对应不同支付模块的官方文档,但是,请大家注意,该文档有待完善,完全照着文档做,可能实现不了你的功能
& & &&3、微信支付流程
  微信支付的流程,在微信支付官网上也有所显示,这里更加泛化的说一下,其实微信支付需要的是集成了微信SDK的客户端,客户先通过客户端浏览完成订单,然后后台首先在业务系统生成了订单,订单生成后,业务系统请求微信服务器,进行统一下单。统一下单完成后,微信返回相关信息,后台就可以形成相应的支付二维码或者是封装出可以调起微信支付需要的信息。接下来,用户只要通过扫一扫或者点击确认支付,便可以调出微信支付。支付成功后,微信会给用户发送信息,同时也会对业务系统指定的地址发送对应的回调信息,将支付结果告知微信。同时,微信支付信息也可以通过后台直接请求微信支付来进行确认。
& & & 4、微信支付相关
& & & & &&首先,微信支付有一个最重要的过程,就是统一下单,简单的说,开发者需要将业务系统中的订单信息发送给微信,让微信后台形成在微信那边的一个支付订单。在向微信请求的时候,传送的数据为xml格式,微信要求xml传送的数据需要进行一次加密,然后将加密的字符串附加在xml中一起传输到服务器端,服务器端验证通过之后才能进行下订单操作。具体的算法说明地址
& & & & & 以下,是基于java实现的加密算法:
* 微信支付加密工具,需要加入key
4 public static String signature(Map&String, String& map, String key) {
Set&String& keySet = map.keySet();
String[] str = new String[map.size()];
StringBuilder tmp = new StringBuilder();
// 进行字典排序
str = keySet.toArray(str);
Arrays.sort(str);
for (int i = 0; i & str. i++) {
String t = str[i] + "=" + map.get(str[i]) + "&";
tmp.append(t);
if (StringUtils.isNotBlank(key)) {
tmp.append("key=" + key);
String tosend = tmp.toString();
MessageDigest md = null;
byte[] bytes = null;
md = MessageDigest.getInstance("MD5");
bytes = md.digest(tosend.getBytes("utf-8"));
} catch (Exception e) {
e.printStackTrace();
String singe = byteToStr(bytes);
return singe.toUpperCase();
  微信支付第一个问题,数据加密的key。这个坑在于不细心,微信支付有很多key,包括我们微信绑定时候自己输入的key,还有微信给的随机字符key,而这里,在用于加密的key,并不是我们微信公众号中的 AppSecret,而是在微信支付商户后台设置的key,设置的位置为: key设置路径:微信商户平台(pay.)--&账户设置--&API安全--&密钥设置 如果不是使用该Key,哪怕是你的算法写对了,数据传到用户那里,依然返回的是签名错误。
& & &PS:微信官方给出了一个验证签名准确性的工具,该工具地址为,AnyWay,正如刚才说了,如果key设置的不正确,比如说使用了AppSecret ,那么,你会发现,该工具的出的加密字符串和自己得出的一模一样,然后当你发送给微信服务端的时候,永远返回的是错误。
  微信支付第二个问题,post编码问题。当组装好数据后,需要通过POST的形式向微信服务器发送数据。可是,问题来了,微信的数据封装的完全正确,key也设置正确了,在官方的验证工具上验证出来也是正确的,可是,微信总是提示签名错误。这个问题出现在post请求的编码问题上,遇到这个问题的情况是,在封装数据的时候,xml里面加入了中文,然后每次请求就会报错,可是如果中文去掉,下单成功。最后才发现,原来POST的时候,没有设置编码,设置成为UTF8之后就没事了。可是,返回的签名错误,也真心难排查啊
  微信支付第三个问题,js-sdk调起支付控件。这一步时讲在微信里面H5调起支付控件的。需要注意的是要在H5上面调出支付控件,第一件事需要在微信公众要后台添加指定域名允许该域名调起控件,否则,是不能调起的。设置的教程在这:&。
&&&&&设置完成之后,接下来是通过js调起,在此吐槽一下,我第一次做的时候,是直接copy的官方的js下来改的,可是。。。。。。。官方的JS上面全角半角的字符混合,导致的别说是他的JS了,就是我自己写的JS最后都没调出来。。。。。然后,关于提示,,苹果版还好,安卓版的微信,如果调不出控件,它一点反应都不会有的。。相对而言,苹果版会有一个弹框提示,所以后期,只要出现问题,都先用苹果测测看看出了什么错。
  微信支付第四个问题,app端数据封装。能够统一下单了,这样一来就是对数据封装返回给前端了,这一部,还是需要进行签名,按理来说,前面和前面采用的是同样的方法,应该问题不大才对。确实,在web端和扫码支付都没多大问题,可是,app端问题来了。我在公司刚开始和安卓的同事调这个的时候,本来以为一个下午能搞定了。可是,却不如我们所想。我们全部采用的是官方给的要求进行封装的数据,我后台统一下单完成之后,给到安卓,结果安卓死活调不出支付控件,而且一直都返回-1的结果,该结果,可以说一点用处都没有。安卓端的同时调了好久,一直没有找到解决方案,值得一说的是,它官方给的Demo是可以调出结果界面,可是也是调不出支付控件的。而且,他的java文件,utf-8和GBK两种编码混在一起的。最后说一下,为啥app调不出支付控件。
1 //网页调起的时候
2 String time = Long.toString(System.currentTimeMillis());
3 back.put("appId", mchappid);
4 back.put("timeStamp", time);
5 back.put("nonceStr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS");
6 back.put("package", "prepay_id=" + order.getPrepay_id());
7 back.put("signType", "MD5");
8 String sign2 = SignatureUtils.signature(back, wx_key);
10 JSONObject jsonObject = new JSONObject();
11 jsonObject.put("appId", mchappid);
12 jsonObject.put("timeStamp", time);
13 jsonObject.put("nonceStr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS");
14 jsonObject.put("package", "prepay_id=" + order.getPrepay_id());
15 jsonObject.put("signType", "MD5");
16 jsonObject.put("paySign", sign2);
18 result.put("status", "success");
19 result.put("msg", "下单成功");
20 result.put("obj", jsonObject);
1 //APP调起的时候,请注意,安卓端不能用驼峰法,所有的key必须使用小写
2 String time = Long.toString(System.currentTimeMillis());
3 back.put("appid", app_mchappid);
4 back.put("timestamp", time);
5 back.put("partnerid", app_mchid);
6 back.put("noncestr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS");
7 back.put("prepayid", order.getPrepay_id());
8 back.put("package", "Sign=WXPay");
9 String sign2 = SignatureUtils.signature(back, wx_key);
11 JSONObject jsonObject = new JSONObject();
12 jsonObject.put("appid", app_mchappid);
13 jsonObject.put("timestamp", time);
14 jsonObject.put("partnerid", app_mchid);
15 jsonObject.put("noncestr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS");
16 jsonObject.put("prepayid", order.getPrepay_id());
17 //jsonObject.put("package", "Sign=WXPay");
18 jsonObject.put("sign", sign2);
19 result.put("status", "success");
20 result.put("msg", "下单成功");
21 result.put("obj", jsonObject);
如图,图1为微信官方文档中安卓调起支付控件的示例代码,接下来为web端调起支付控件时候进行加密的算法,最后为解决问题后返回给APP数据时候数据封装的代码。问题所在就是在于,它数据的封装不像官网所说的使用驼峰法,app的时候,需要把所有的字符小写,,,小写,,,,,,,。还有,官方说的packageValue是错的,要用package,就是因为这些错,加密出来的数据是错的,所以app端才调不出支付控件。在此,为我那个调到奔溃的同事默哀。
  至今为止遇到的问题大致如上,做下笔记,同时希望对同为开发的朋友有用
  最后,附上本人在github上的一个基于java的微信支付后台Demo&
阅读(...) 评论()

我要回帖

更多关于 关闭微信转账手机验证 的文章

 

随机推荐