微信APP支付返回-1错误

【准备事项】

1、在微信开放平台https://open.weixin.qq.com申请新应用并拿到APPID,给这个应用申请开通支付功能并拿到商户ID。
2、在商户平台https://pay.weixin.qq.com配置API密钥。


【服务器端注意事项】

1、根据SDK中的例子调用 【统一下单API】拿到prepay_id。
2、签名给APP用。(重中之重,见红圈内代码)




我遇到的坑:

微信文档告诉我说“参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay”。

于是我就自己根据签名规范先字典排序,生成URL,拼接API密钥,最后签名转大写,于是签名出来后给APP用,但是调起微信APP死活返回-1错误。

URL如下:

appid=wxbb221fb2439af8dh&noncestr=cieqqgcixf3thk4gjjtk5x9tp7r0uww6&package=Sign=WXPay
&partnerid=1314759201&prepayid=wx20160226110745491ed438910378262276
&timestamp=1456456126&&key=e10adc3949ba59abbe56e0duasjed8jb

最后找到一个朋友告诉我说,使用SDK提供的类方法MageSign()来生成签名,结果傻傻地调起微信APP成功了。

URL如下:

appid=wxbb221fb2439af8dh&body=定金300.00元-2015款别克20T 双离合 领先型威朗&detail=定金300.00元-2015款别克&mch_id=1314759201&nonce_str=1dqqtrf60rtbpcao8fplptwk5o00ey0y&notify_url=http://test.tangxinzhuan.com/api/pay/notify&out_trade_no=DH201602241041377635&spbill_create_ip=124.65.159.146&time_expire=20160226112048&time_start=20160226111048&total_fee=30000&trade_type=APP&key=e10adc3949ba59abbe56e0duasjed8jb

对比前后生成的URL,让我们发现参与签名的字段名根本不是微信告诉我们的appId、partnerId、prepayId、nonceStr、timeStamp、package。(艹写微信文档的家伙!)

遇坑总结:一定要使用SDK提供的类方法MakeSign来生成签名!


【APP端注意事项】

1、安卓项目的包名称换成申请时填写的包名称。

2、用提交的签名的keystore文件打包。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值