1.首先把sdk相關(guān)文件替換,在官網(wǎng)下載。
2.創(chuàng)建wxApi文件夾,在里面引入對(duì)應(yīng)的sdk文件

2.1 在Wxpay文件夾內(nèi)創(chuàng)建WxpayModule.h文件
內(nèi)容為:
#import
#import
#import "WXApiObject.h"
#import
#import "WXApi.h"
@interface WxpayModule : NSObject <RCTBridgeModule, WXApiDelegate>
@end
2.2 在Wxpay文件夾內(nèi)創(chuàng)建WxpayModule.m文件
內(nèi)容為:
#import "WxpayModule.h"
@implementation WxpayModule
RCTPromiseResolveBlock resolveBlock = nil;
- (instancetype)init
{
? self= [superinit];
? if(self) {
? ? [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleWXPay:) name:@"WXPay" object:nil];
? }
? return self;
}
- (void)dealloc
{
? [[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)handleWXPay:(NSNotification*)aNotification
{
? NSString* errCode =? [aNotificationuserInfo][@"errCode"];
? resolveBlock(@{@"errCode": errCode});
}
RCT_EXPORT_METHOD(registerApp:(NSString*)APP_ID){
? [WXApi registerApp: APP_ID universalLink:@"https://xx.xx.xx/xx/"];//向微信注冊
}
RCT_EXPORT_METHOD(pay:(NSDictionary *)order
? ? ? ? ? ? ? ? ? resolver:(RCTPromiseResolveBlock)resolve
? ? ? ? ? ? ? ? ? rejecter:(RCTPromiseRejectBlock)reject){
? resolveBlock= resolve;
? //調(diào)起微信支付
? //注意order取的值對(duì)應(yīng)的key要和自己服務(wù)器提供的一致
? PayReq*req = [[PayReqalloc]init];
? req.partnerId= [orderobjectForKey:@"partnerid"];
? req.prepayId= [orderobjectForKey:@"prepayid"];
? req.nonceStr= [orderobjectForKey:@"noncestr"];
? req.timeStamp= [[orderobjectForKey:@"timestamp"]intValue];
? req.package= [orderobjectForKey:@"package"];
? req.sign= [orderobjectForKey:@"sign"];
? [WXApi sendReq:req completion: nil];
}
RCT_REMAP_METHOD(isSupported, // 判斷是否支持調(diào)用微信SDK
?? ? ? ? ? ? ? ? resolver:(RCTPromiseResolveBlock)resolve
?? ? ? ? ? ? ? ? rejecter:(RCTPromiseRejectBlock)reject){
? if(![WXApiisWXAppInstalled]) resolve(@NO);
? elseresolve(@YES);
}
RCT_EXPORT_MODULE(Wxpay);
@end
注意把universalLink替換成自己的,這個(gè)是短鏈接具體配置有專門的文章介紹,可以自行百度。
3.AppDelegate.h
#import
@class WeChatPayViewController;
@interface AppDelegate : UIResponder<UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) WeChatPayViewController *viewController;
@end
4.AppDelegate.m
引入:#import "WxpayModule.h"
添加如下方法
- (BOOL)application:(UIApplication*)applicationcontinueUserActivity:(NSUserActivity*)userActivityrestorationHandler:(void(^)(NSArray<id> *__nullablerestorableObjects))restorationHandler{
? ? NSURL*LinkUrl = userActivity.webpageURL;
? ? NSLog(@"linkurl == %@",LinkUrl);
? ? return [WXApi handleOpenURL:LinkUrl delegate: self];
? ? //do something..
//? ? return [WXApi handleOpenUniversalLink:userActivity delegate:[WXApiManager sharedManager]];//微信SDK1.8.6開始的 必須驗(yàn)證短鏈
//? ? return YES;
}
//支付回調(diào)9以前
- (BOOL)application:(UIApplication*)applicationhandleOpenURL:(NSURL*)url {
? return? [WXApi handleOpenURL:url delegate: self];
}
#pragma mark- wx callback
- (void)onReq:(BaseReq*)req
{
? // TODO Something
}
- (void)onResp:(BaseResp*)resp
{
? //判斷是否是微信支付回調(diào) (注意是PayResp 而不是PayReq)
? if ([resp isKindOfClass:[PayResp class]])
? {
? ? //發(fā)出通知 從微信回調(diào)回來之后,發(fā)一個(gè)通知,讓請(qǐng)求支付的頁面接收消息,并且展示出來,或者進(jìn)行一些自定義的展示或者跳轉(zhuǎn)
? ? NSNotification* notification = [NSNotificationnotificationWithName:@"WXPay"object:niluserInfo:@{@"errCode":@(resp.errCode)}];
? ? [[NSNotificationCenter defaultCenter] postNotification:notification];
? }
}