1281203-f29e52b960ed4063
調(diào)起微信支付后出現(xiàn)這種情況
點(diǎn)了確定按鈕返回App后,給出的錯(cuò)誤碼中-2歹苦,就是是說(shuō),用戶取消支付督怜,什么玩意殴瘦?
這其實(shí)就是傳遞接口的字段導(dǎo)致的問(wèn)題。那么如何解決呢号杠?首先確保以下幾點(diǎn)
nonceStr是用Server返回的痴施,不要自己生成。
request.package = @”Sign=WXPay”, 這個(gè)是死的,不要寫(xiě)錯(cuò)辣吃。
timeStamp是個(gè)十位數(shù)字动遭,不是13位。
確定前面所有都沒(méi)有錯(cuò)誤后神得,很有可能就是sign的問(wèn)題了厘惦。那么我們需要自己完成簽名,也就是說(shuō)自己生成sign哩簿。
生成Sign需要DataMD5類宵蕉,建議讀者自己下載 WebchatDemo里面有這個(gè)類
所傳的參數(shù)appId要用Server提供的appId,不要弄錯(cuò)成其他的了节榜,注意這里還有一個(gè)坑羡玛,在DataMD5的m文件里面要添加商戶密鑰key字段
1281203-bbf012a3fb450f9d要注意在加密的方法里添加商戶密鑰key
Objective-C
1
[contentString appendFormat:@"key=%@",@"E0A8028B79F4E64885B9D930E6FD88E2"];
最后就是sign是全部大寫(xiě)了
還有最后一個(gè)問(wèn)題,就是如果你用了友盟社會(huì)化分享來(lái)做微信登錄的話宗苍,那么你要先用友盟注冊(cè)微信稼稿,后調(diào)用微信SDK注冊(cè)
Objective-C
1
2
3
[UMSocialWechatHandler setWXAppId:SHARE_WX appSecret:SHARE_WX_SECRET url:SHAREURL];
? ? [WXApi registerApp:SHARE_WX withDescription:@"demo"];
這下返回碼為-2的問(wèn)題應(yīng)該可以解決了,如果還是不行讳窟,可以和Server的同事商量返回的屬性有沒(méi)有問(wèn)題让歼。
8:最后還的回調(diào)問(wèn)題,當(dāng)用戶完成支付或者取消支付丽啡,都要跳轉(zhuǎn)回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,那么就是微信支付的跳回补箍。需要調(diào)用 WXApi.handleOpenURL來(lái)處理改执,需要把Demo的WXApiManager文件拷貝到項(xiàng)目里面,調(diào)用它來(lái)處理回調(diào)坑雅。
上面就是我在開(kāi)發(fā)微信支付SDK遇到的坑了天梧,希望可以幫助大家。