React Native iOS 集成支付宝支付功能--回调问题
来源:互联网 发布:科比各年数据统计 编辑:程序博客网 时间:2024/06/05 10:31
React Native iOS 集成支付宝支付功能–回调问题
首先 附上GitHub地址0x5e/react-native-alipay
react-native-alipay Git有不少版本 当你使用npm时需要多加注意了
之前打算用react-native-yunpeng-alipay 和 react-native-alipay 但是继承了进去后 编译成功了 ,在JS里面一直不能拿到方法(以后有机会还会再试的),
后来就找到了$ yarn add @0x5e/react-native-alipay ,集成后可以jump 到支付宝支付并且支付成功,但是JS的回调一直不走,Xcode里面的回调是有拿到返回值的,
最终的解决办法是参考的react-native-alipay 里面的解决方法:
在RCTAlipay.m 中:
#import "RCTAlipay.h"#import <AlipaySDK/AlipaySDK.h>static NSString *const kOpenURLNotification = @"RCTOpenURLNotification";@implementation RCTAlipay{ RCTPromiseResolveBlock _resolve;//定义了一个全局的Block}- (instancetype)init { if (self = [super init]) { self->_resolve = nil;//初始化置空 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOpenURL:) name:kOpenURLNotification object:nil]; } return self;}- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self];}- (void)handleOpenURL:(NSNotification *)notification { NSString *urlString = notification.userInfo[@"url"]; NSURL *url = [NSURL URLWithString:urlString]; if ([url.host isEqualToString:@"safepay"]) { [AlipaySDK.defaultService processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { //由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑 if (self->_resolve) { self->_resolve(resultDic);//接受并返回回调信息 self->_resolve = nil; } NSLog(@"processOrderWithPaymentResult = %@", resultDic); }]; [AlipaySDK.defaultService processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"processAuth_V2Result = %@", resultDic); }]; }}- (dispatch_queue_t)methodQueue{ return dispatch_get_main_queue();}RCT_EXPORT_MODULE()RCT_EXPORT_METHOD(authWithInfo:(NSString *)infoStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { [AlipaySDK.defaultService auth_V2WithInfo:infoStr fromScheme:self.appScheme callback:^(NSDictionary *resultDic) { resolve(resultDic); }];}RCT_EXPORT_METHOD(pay:(NSString *)orderInfo resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { self->_resolve = resolve;//跳到支付宝时候 赋值 [AlipaySDK.defaultService payOrder:orderInfo fromScheme:self.appScheme callback:^(NSDictionary *resultDic) { self->_resolve = nil;//回调置空 resolve(resultDic); }];}RCT_EXPORT_METHOD(payInterceptorWithUrl:(NSString *)urlStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { [AlipaySDK.defaultService payInterceptorWithUrl:urlStr fromScheme:self.appScheme callback:^(NSDictionary *resultDic) { resolve(resultDic); }];}RCT_EXPORT_METHOD(getVersion:(RCTPromiseResolveBlock)resolve) { resolve(AlipaySDK.defaultService.currentVersion);}- (NSString *)appScheme { NSArray *urlTypes = NSBundle.mainBundle.infoDictionary[@"CFBundleURLTypes"]; for (NSDictionary *urlType in urlTypes) { NSString *urlName = urlType[@"CFBundleURLName"]; if ([urlName hasPrefix:@"alipay"]) { NSArray *schemes = urlType[@"CFBundleURLSchemes"]; return schemes.firstObject; } } return nil;}@end
注意:
- URL_Schemes 的设置
- 注意 appdelegate.m中的
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{ return [RCTLinkingManager application:application openURL:url options:options];}
阅读全文
1 0
- React Native iOS 集成支付宝支付功能--回调问题
- React-Native之iOS集成支付宝支付
- react-native 集成支付宝
- React-Native之android集成支付宝
- 【转】react-native集成支付宝
- iOS集成支付宝SDK支付功能
- iOS集成支付功能 --支付宝
- (Android集成支付宝支付)react-native实现支付宝支付
- 支付宝支付功能集成
- 一步一步将支付宝集成 react-native 应用
- react-native 集成微信支付
- iOS 集成支付宝支付
- iOS集成支付宝支付
- iOS 集成支付宝支付
- iOS集成支付宝支付
- 集成iOS支付宝支付
- iOS支付宝支付集成
- iOS集成支付宝支付功能(最详细易懂)
- 17个新手常见Python运行时错误
- filter常用场景
- 机器学习课后作业笔记(二)
- 【知了堂学习笔记】_mybatis入门
- POJ 1035 Spell checker 【字符串暴力查找】
- React Native iOS 集成支付宝支付功能--回调问题
- 纯js对根据table中的两个字段对table进行去重操作(精华版)
- eclipse项目转到as项目报错
- scala/idea/java
- poj 2406 Power Strings
- 01 Anykey登录界面
- 字符串关联度求解算法改进模型
- 初识JavaScript DOM
- response.setContentType()的作用及参数