聽說要集成京東支付我的內(nèi)心是拒絕的。
具體集成方法看京東開發(fā)者文檔。
下面說說坑點:
1、下載下來運行可以支付,改成自己的商戶號和openid,不能調(diào)起京東支付。最后給的解釋是:要在商戶號后面加002 , 002代表 支付產(chǎn)品, 3位后綴為了區(qū)分產(chǎn)品。WTF
2、測試的demo,支付完成后不走Appdelegate中的方法。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
return [[JDPAuthSDK sharedJDPay] handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[JDPAuthSDK sharedJDPay] handleOpenURL:url];
}
這兩個方法都不走.
再看看發(fā)起支付的方法
[[JDPAuthSDK sharedJDPay] payWithViewController:self orderId:@"1000148966268266494059" signData:@"bb05ce87d5f4c9063eb007e2301c7a83" completion:^(NSDictionary *resultDict) {
NSLog(@"%@", resultDict);
}];
再看看返回的resultDict
{
"extraData": {
"extraMsg": {
"sign": "O6CEG7VYPmg+orfTixl0odoWVJldefoztOwfCwC8687t0rBL0O60sJtEjL2D2fOtvZdQxgG/z+Gyn/nKPnmoSYGjw2XkzU7UIXEgSlcojx2POlBFpLi+pMPGgnJXUF4tcnSqaRBuzqnMyQcOBMHdM2xxIZKGnqedaeHgU1NldBA=",
"tradeNum": "b96795c742d781d49aa0d487699ebf64bc138aa8cb7e6053",
"tradeTime": "d9668085c69c2ecb67b66f53cc0346c786f01461a0e475a4",
"amount": "e5a6c3761ab9ddaf",
"currency": "ac7132c57f10d3ce",
"status": "e00c693e6c5b8a60",
"note": "dd762e2dc91f21fb9398efd83243b1f6"
}
},
"payStatus": "JDP_PAY_SUCCESS"
}
看到了這一行"payStatus": "JDP_PAY_SUCCESS"
原來是在這里返回了支付結果再這個回調(diào)里面。好吧,恕我眼瞎,還順著微信支付寶的思路找呢。
暫時遇到這些問題,如果有新的坑,將繼續(xù)添加
更新。。。。果然又掉坑里面了
3、提交訂單,選擇京東支付。打開了京東APP,停在京東首頁了。我就知道,一入東付深似海。

技術支持.png
然后又檢查了一邊配置。。。。
原來是orderid傳錯了,腦殘片來一盒。終于調(diào)起東付了,什么?簽名錯誤。。。我只想去睡覺??
最終更新:
經(jīng)歷了千辛萬苦之后終于調(diào)試成功了。簽名失敗是因為后臺調(diào)取的方法不對,京東文檔完全沒有說明。
調(diào)試中還發(fā)現(xiàn)一個bug,至今京東沒有回復。在6s 10.3.2中,如果沒有安裝京東app調(diào)起的是h5頁面登錄頁面,支付成功后有時會返回到前一個登錄成功的頁面,而不是支付完成的頁面