首先忽略掉申請AppKey的步驟蛙卤,直接從集成開始
1痢甘、cocopods集成SDK
pod 'WechatOpenSDK'
2、添加依賴庫
SystemConfiguration.framework
, libz.tbd, libsqlite3.0.tbd
, libc++.tbd
, Security.framework
, CoreTelephony.framework
, CFNetwork.framework
.
3造虎、設(shè)置URL Schemes為您的APPID
image.png
4、在Info.plist里面添加白名單
LSApplicationQueriesSchemes
image.png
5垛膝、在APPdelegate里面注冊APPID
/** 微信支付 */
[WXApi startLogByLevel:WXLogLevelNormal logBlock:^(NSString *log) {
NSLog(@"log : %@", log);
}];
//向微信注冊,發(fā)起支付必須注冊
[WXApi registerApp:@"wxb4ba3c02aa476ea1" enableMTA:YES];
6稽揭、調(diào)起支付
+ (void)jumpToBizPay {
//============================================================
// V3&V4支付流程實現(xiàn)
// 注意:參數(shù)配置請查看服務(wù)器端Demo
// 更新時間:2015年11月20日
//--->實際項目代碼
NSString *urlString = @"https://wxpay.wxutil.com/pub_v2/app/app_pay.php?plat=ios";
NSString *url =[NSString stringWithFormat:@"%@%@", @"Base_URL",urlString];
// NSLog(@"微信支付___URL=== %@,%@", url,self.orderId);
[DCServiceTool postWithUrl:url params:@{@"orderID":@"orderId"} success:^(id _Nonnull responseObject) {
if ([[responseObject objectForKey:@"code"] intValue] == 0) {
// 調(diào)起微信支付
PayReq *req = [[PayReq alloc] init];
// id dic = [responseObject objectForKey:@"data"];
// if ([dic isKindOfClass:[NSString class]]) {
// NSString *str = [NSString stringWithFormat:@"%@",dic];
// if ([str isEqualToString:@"PAY_SUCCESS"]) {
// /** 支付成功 處理 */
// // [weakself goToOrderDetailVC];
// DCLog(@"支付成功 處理 ---");
// return ;
// }
// return ;
// }
/** 微信分配的公眾賬號ID -> APPID */
req.openID = [responseObject objectForKey:@"appid"];
/** 商家向財付通申請的商家id */
req.partnerId = [responseObject objectForKey:@"partnerid"];
/** 預(yù)支付訂單 從服務(wù)器獲取 */
req.prepayId = [responseObject objectForKey:@"prepayid"];
/** 隨機串裆悄,防重發(fā) */
req.nonceStr = [responseObject objectForKey:@"noncestr"];
/** 時間戳,防重發(fā) */
req.timeStamp = [[responseObject objectForKey:@"timestamp"] intValue];
/** 商家根據(jù)財付通文檔填寫的數(shù)據(jù)和簽名 <暫填寫固定值Sign=WXPay>*/
req.package = [responseObject objectForKey:@"package_"];
/** 商家根據(jù)微信開放平臺文檔對數(shù)據(jù)做的簽名, 可從服務(wù)器獲取萎庭,也可本地生成*/
req.sign = [responseObject objectForKey:@"sign"];
//日志輸出
DCLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[responseObject objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
if ([WXApi isWXAppInstalled] == YES) {
BOOL sss = [WXApi sendReq:req];
if (!sss ) {
[SVProgressHUD showWithStatus:@"微信sdk錯誤"];
[SVProgressHUD dismissWithDelay:1.0];
}
} else {
//微信未安裝
[SVProgressHUD showWithStatus:@"您沒有安裝微信"];
[SVProgressHUD dismissWithDelay:1.0];
}
}else {
[SVProgressHUD showWithStatus:responseObject[@"msg"]];
[SVProgressHUD dismissWithDelay:1.0];
}
} failure:^(NSError * _Nonnull error) {
}];
}
7霜医、支付結(jié)果回調(diào)
#pragma mark - WXApiDelegate
- (void)onResp:(BaseResp *)resp {
if([resp isKindOfClass:[PayResp class]]){
//支付返回結(jié)果,實際支付結(jié)果需要去微信服務(wù)器端查詢
NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付結(jié)果"];
switch (resp.errCode) {
case WXSuccess:
strMsg = @"支付結(jié)果:成功驳规!";
NSLog(@"支付成功-PaySuccess肴敛,retcode = %d", resp.errCode);
break;
default:
strMsg = [NSString stringWithFormat:@"支付結(jié)果:失敗吗购!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
NSLog(@"錯誤医男,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
break;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}else {
}
}
- (void)onReq:(BaseReq *)req {
}
8、在appDelegate.m中整理判斷回調(diào)
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
return YES;
}
/**
這里處理微信支付完成之后跳轉(zhuǎn)回來
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
/** 微信支付回調(diào) */
if ([url.host isEqualToString:@"pay"]) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
/** 微信的支付回調(diào) */
if ([url.host isEqualToString:@"pay"]) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
return YES;
}