听说要集成京东支付我的内心是拒绝的。
具体集成方法看京东开发者文档。
下面说说坑点:
1、下载下来运行可以支付,改成自己的商户号和openid,不能调起京东支付。最后给的解释是:要在商户号后面加002
, 002代表 支付产品, 3位后缀为了区分产品。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];
}
这两个方法都不走.
再看看发起支付的方法
[[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"
原来是在这里返回了支付结果再这个回调里面。好吧,恕我眼瞎,还顺着微信支付宝的思路找呢。
暂时遇到这些问题,如果有新的坑,将继续添加
更新。。。。果然又掉坑里面了
3、提交订单,选择京东支付。打开了京东APP,停在京东首页了。我就知道,一入东付深似海。
然后又检查了一边配置。。。。
原来是orderid传错了,脑残片来一盒。终于调起东付了,什么?签名错误。。。我只想去睡觉😴
最终更新:
经历了千辛万苦之后终于调试成功了。签名失败是因为后台调取的方法不对,京东文档完全没有说明。
调试中还发现一个bug,至今京东没有回复。在6s 10.3.2中,如果没有安装京东app调起的是h5页面登录页面,支付成功后有时会返回到前一个登录成功的页面,而不是支付完成的页面