2017-12-29

2017-12-29_第1张图片
图片发自App

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遇到的坑了,希望可以帮助大家。

你可能感兴趣的:(2017-12-29)