微信支付
流程 :
移動端向后臺發送購物請求 -> 后臺發送相應信息發給微信 -> 微信生成訂單反饋給后臺 -> 后臺反饋訂單信息給移動端 -> 移動端用相應信息調用手機微信客戶端 -> 完成支付收到相應反饋再給后臺發送完成信息備案存儲
移動端工作
1.下載微信支付SDK
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
2.在工程General中添加添加相應靜態庫
B2F44D11-3980-4D24-81C7-7EAD9652AAB7.png
3.在Info中添加 微信開發者ID
4BECEABF-3ADC-4546-A9EC-95F30389D590.png
4.appDelegate中程序已啟動注冊微信支付
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WXApi registerApp:@"wxb4ba3c02aa476ea1" withDescription:@"com.kdx.touchfound"];
return YES;
}```
5.發送用戶選擇貨品給后臺,獲取后臺回饋的訂單信息,填充后調用微信客戶端
NSMutableString *retcode = [dict objectForKey:@"retcode"];
if (retcode.intValue == 0){
NSMutableString *stamp = [dict objectForKey:@"timestamp"];
//調起微信支付
PayReq* req = [[PayReq alloc] init];
req.partnerId = [dict objectForKey:@"partnerid"];
req.prepayId = [dict objectForKey:@"prepayid"];
req.nonceStr = [dict objectForKey:@"noncestr"];
req.timeStamp = stamp.intValue;
req.package = [dict objectForKey:@"package"];
req.sign = [dict objectForKey:@"sign"];
[WXApi sendReq:req];
//日志輸出
NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dict objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
}
6.接收支付結果
在AppDelegate中遵守協議 <WXApiDelegate>
//用于接收支付結果
-
(void)onResp:(BaseResp *)resp {
if ([resp isKindOfClass:[PayResp class]]) {
NSString stringMsg,strTitle = @"支付結果";
switch (resp.errCode) {
case WXSuccess:
stringMsg = @"支付結果 : 成功";
NSLog(@"支付成功 - retcode = %d",resp.errCode);
break;default: stringMsg = @"支付結果 : 失敗"; NSLog(@"支付成功 - retcode = %d",resp.errCode); break; }
}
}
//用于應用間跳轉 (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
return [WXApi handleOpenURL:url delegate:self];
}