学而时习之,不亦悦乎,大家好,我是张杰。
iOS开发支付模块分为两个部分:
1、调取外部支付,例如支付宝、微信、银联等。
2、苹果内购。
前面我们已经讲过苹果内购,现在有朋友问能不能出一个详细的支付宝支付流程,刚好我也想复习一下,下面我们来实现一下吧。
一、支付宝。
1、登录支付宝开放平台 https://open.alipay.com/platform/home.htm
注册或者登录,然后创建应用,关联商户号,设置签名,拿到密钥和AppID还有商户ID 就可以开始了,这个事情一般是运营或者后台来做,基本轮不到开发来搞,如果没有人搞,老板信任你,账号密码给你了你也可以分分钟搞定。这里我是端着小板凳在监理电脑面前和她一起弄的,就没有截图了。
有疑问看这里:https://opendocs.alipay.com/open
2、现在一般三方库或者SDK用pod管理,如果你的项目不是pod管理的,可以看我的这篇文章:https://www.jianshu.com/p/366eef7c2472
如果你不想用pod或者变换有难度,那就手动导入SDK吧 看这里:https://opendocs.alipay.com/open/204/105295
下面将pod导入,打开项目中的podfile文件
pod 'AlipaySDK-iOS'
打开终端,项目拖入
pod install
3、AppDelegate里导入头文件
#import <AlipaySDK/AlipaySDK.h>
设置代码
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
// 支付跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
// 授权跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
// 解析 auth code
NSString *result = resultDic[@"result"];
NSString *authCode = nil;
if (result.length>0) {
NSArray *resultArr = [result componentsSeparatedByString:@"&"];
for (NSString *subResult in resultArr) {
if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
authCode = [subResult substringFromIndex:10];
break;
}
}
}
NSLog(@"授权结果 authCode = %@", authCode?:@"");
}];
}else{
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
项目设置
551603244534_.pic_hd.jpg
然后在点击支付按钮处调用:
NSString *appScheme = @"ruichaoalisdk";
// NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString = @"后台给的订单拼接字符串";
// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
至此,客户端流程完毕。总结一下:客户端要做的很简单,导入SDK,调用后台接口拿到 "订单拼接字符串",调用SDK,根据返回处理具体业务就好了。
如果有错误或者还有其他问题,可以联系我:zhangjieiossky@163.com,谢谢
网友评论