0x5e / react-native-alipay

Alipay SDK for React Native. Support RN >= 0.47.
MIT License
198 stars 86 forks source link

支付调用支付宝一直返回订单支付成功。状态为4000,重复提交,但实际上并没有支付 #12

Closed tal007 closed 6 years ago

tal007 commented 6 years ago

支付调用支付宝一直返回订单支付成功。状态为4000,重复提交,但实际上并没有支付,还没有输入密码呢

0x5e commented 6 years ago

4000是操作失败吧?

tal007 commented 6 years ago

文档上面写的确实是操作失败。但是支付宝返回的4000是“重复请求”。而且有时使用 Alipay.pay()不返回东西。之前没有遇到,最近两天遇到的。没有返回东西就没法判断,然后支付成功了后台那边却没有保存

tal007 commented 6 years ago

现在这样 let orderStr =signString; console.log(orderStr); let response = await Alipay.pay(orderStr); alert(1) console.log(response); let { resultStatus, result, memo } = response; if(resultStatus==6001){ 调用Alipay.pay之后 response 没有数据。后面的代码没有执行

0x5e commented 6 years ago

@Anthony-Wilson 请提供一下运行环境等信息,另外如果是iOS的话麻烦试一下react-native-alipay 0.2.2,帮忙验证下是否为iOS SDK的一个回调问题

tal007 commented 6 years ago

@0x5e @0x5e/react-native-alipay": "^0.2.2", "react": "16.0.0", "react-native": "0.51.0",

这个是这几个的版本。就是0.2.2的版本。今天找朋友看了一下,确实是 在RCTAlipay.m里面

RCT_EXPORT_METHOD(pay:(NSString )orderInfo resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { NSLog(@"调用支付宝前"); [AlipaySDK.defaultService payOrder:orderInfo fromScheme:self.appScheme callback:^(NSDictionary resultDic) { resolve(resultDic); }]; NSLog(@"调用支付宝后"); } 上面代码中的回调没有执行

但是这里又确实能打印出resultDic,能看到状态。上面添加了一点打印

还有就是之前这里都没有问题,现在出问题了。其次就是如果没有安装支付宝,使用web嵌套的形式,他是可以返回状态的

0x5e commented 6 years ago

SDK有两个回调,一个是支付方法里的,一个是全局的,按道理两个回调都应该执行。。我在0.2.3也碰到这个问题,然后在0.2.4改为使用全局回调了,如果你是0.2.2有问题的话麻烦再试下0.2.4,谢了:-)

tal007 commented 6 years ago

@0x5e 0.24的就可以了。谢谢了

tal007 commented 6 years ago

今天用的时候 0.2.4的在ios app页面支付的时候没有回调。是 支付宝 skd的问题么?