这篇博客只是讲解了客户端如何接入
下载支付的SDK
[https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1](https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1)
从demo中可以找到AlipaySDK.bundle和AlipaySDK.framework ,将他们添加到项目中,一定要记着是copy。
在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:
添加url schemes
点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”,在“URL Schemes”中输入“xxx”,这里输入什么都可以,自己选择,只要能让支付宝找到回调就可以。
在需要调用AlipaySDK的文件中,增加头文件引用。
import <AlipaySDK/AlipaySDK.h>
这里的orderString不用客户端管,服务器端会将这个字符串拼接好传给客户端,这里的appScheme要和上面的url schemes保持一致。
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
支付结果通知:
在@implementation AppDelegate中以下代码中的NSLog改为实际业务处理代码
//这个是在ios9后的接口,如果需要适配ios9以前的系统,请找对应的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) {
DLog(@"result = %@",resultDic);
NSInteger orderState = [resultDic[@"resultStatus"] integerValue];
NSString *notice = nil;
if (orderState == 9000) {
[[NSNotificationCenter defaultCenter] postNotificationName:AppPay object:nil];
notice = @"支付成功";
} else {
switch (orderState) {
case 8000:
notice = @"支付正在处理中";
break;
case 4000:
notice = @"支付失败";
break;
case 6001:
notice = @"支付取消";
break;
case 6002:
notice = @"网络连接出错";
break;
default:
break;
}
}
}];
}
return YES;
}
下面是授权流程:
基本的配置和支付是一样的,不同的是在调用支付接口的地方变成授权接口
//这里的orderString也是由服务器拼接好返回,AppScheme同支付一样
[[AlipaySDK defaultService] auth_V2WithInfo:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
DLog(@"%@",resultDic);
}];
在@implementation AppDelegate中以下代码中的NSLog改为实际业务处理代码
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
DLog(@"result = %@",resultDic);
}];
}
return YES;
}
如果授权成功:
【
resultStatus=9000
memo="处理成功"
result="success=true&auth_code=d9d1b5acc26e461dbfcb6974c8ff5E64&result_code=200 &user_id=2088003646494707"
】
可以得到auth_code和user_id,这样只要截取出需要的数据就可以了,这样基本上授权完成。
如果哪里写的不对或者有补充的,欢迎斧正~
434



被折叠的 条评论
为什么被折叠?



