1281203-f29e52b960ed4063
调起微信支付后出现这种情况
点了确定按钮返回App后,给出的错误码中-2,就是是说,用户取消支付,什么玩意?
这其实就是传递接口的字段导致的问题。那么如何解决呢?首先确保以下几点
nonceStr是用Server返回的,不要自己生成。
request.package = @”Sign=WXPay”, 这个是死的,不要写错。
timeStamp是个十位数字,不是13位。
确定前面所有都没有错误后,很有可能就是sign的问题了。那么我们需要自己完成签名,也就是说自己生成sign。
生成Sign需要DataMD5类,建议读者自己下载 WebchatDemo里面有这个类
所传的参数appId要用Server提供的appId,不要弄错成其他的了,注意这里还有一个坑,在DataMD5的m文件里面要添加商户密钥key字段
1281203-bbf012a3fb450f9d要注意在加密的方法里添加商户密钥key
Objective-C
1
[contentString appendFormat:@"key=%@",@"E0A8028B79F4E64885B9D930E6FD88E2"];
最后就是sign是全部大写了
还有最后一个问题,就是如果你用了友盟社会化分享来做微信登录的话,那么你要先用友盟注册微信,后调用微信SDK注册
Objective-C
1
2
3
[UMSocialWechatHandler setWXAppId:SHARE_WX appSecret:SHARE_WX_SECRET url:SHAREURL];
[WXApi registerApp:SHARE_WX withDescription:@"demo"];
这下返回码为-2的问题应该可以解决了,如果还是不行,可以和Server的同事商量返回的属性有没有问题。
8:最后还的回调问题,当用户完成支付或者取消支付,都要跳转回App,需要在这里处理一下url
Objective-C
1
2
3
4
if url.host?.compare("pay") == NSComparisonResult.OrderedSame && url.host == "pay" {
WXApi.handleOpenURL(url,delegate: WXApiManager.sharedManager())
return true
}
如果返回的url是pay,那么就是微信支付的跳回。需要调用 WXApi.handleOpenURL来处理,需要把Demo的WXApiManager文件拷贝到项目里面,调用它来处理回调。
上面就是我在开发微信支付SDK遇到的坑了,希望可以帮助大家。