微信APP支付返回-1错误

来源:互联网 发布:java list 获取第一个 编辑:程序博客网 时间:2024/05/11 21:08

【准备事项】

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
原创粉丝点击