IOS 第三方支付的使用:支付宝
2015-08-17 16:26
435 查看
总结一下支付宝IOS使用步骤:
1 第三方支付:支付宝
使用过程:
1.1 向支付宝申请支付宝使用权限。
这个步骤一般是以公司的名义,填写各种公司信息,最后审核通过。
1.2 获取关键参数
selleder_ID
parter_ID
加密信息
1.3 下载支付宝集成SDK(无线移动版)放到我们的应用中
1.4 开始编写代码
1.4.1 编辑商品信息
AlixPayOrder *order = [[AlixPayOrder
alloc] init];
order.productName =
商品名称;
order.productDescription =
商品描述;
order.partner =
合作者身份ID;
order.seller =
卖家支付宝账号;(卖家唯一标示)
order.amount =
支付金额;
1.4.2 订单信息加密
首先利用商户私钥生成一个对象,然后用这个对象加密订单信息。
id<DataSigner>signer =
CreateRSADataSigner(商户私钥);
NSString *signedString = [signer
signString:[order description]];
1.4.3 组合订单信息
NSString *orderString = [NSString
stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
[order description], signedString,
@"RSA"];
1.4.4 开始进行订单支付
参数1 订单信息
参数2 网页支付 回调APPscheme
参数3 回调方法
参数4 回调对象
[AlixLibService
payOrder:orderString AndScheme:@"tuangou"
seletor:@selector(getResult:)target:self];
1.4.5 支付完成处理
支付完成处理分为两种情况,一种是网页支付处理,一种是客户端支付处理
如果是客户端版:(意思就是从支付宝的客户端跳转回这个App)
在AppDelegate中使用回调方法:
- (BOOL)application:(UIApplication*)application openURL:(NSURL *)urlsourceApplication:(NSString*)sourceApplication
annotation:(id)annotation
在这里处理相应的逻辑:
支付结果验证逻辑可以参考支付宝的SDKdemo,基本不用修改神马。
AlixPayResult * result =
nil;
if (url !=
nil && [[urlhost]
compare:@"safepay"] ==
0) {
NSString * query = [[url
query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
#if ! __has_feature(objc_arc)
result = [[[AlixPayResultalloc] initWithString:query] autorelease];
#else
result = [[AlixPayResult
alloc] initWithString:query];
#endif
}
if (result.statusCode ==
9000) {
将支付时候的私钥与现在的公钥进行配对。
id<DataVerifier> verifier =
CreateRSADataVerifier(AlipayPubKey);
if ([verifier
verifyString:result.resultString
withSign:result.signString]) {
验证信息有效
} else {
// 失败
}
} else {
// 失败
}
return YES;
如果是网页版 回调方法参考1.4.4. 这里就不多说了。处理逻辑参考上面的代码。有一点需要注意:URL Scheme:
Target info中添加这个Scheme
1 第三方支付:支付宝
使用过程:
1.1 向支付宝申请支付宝使用权限。
这个步骤一般是以公司的名义,填写各种公司信息,最后审核通过。
1.2 获取关键参数
selleder_ID
parter_ID
加密信息
1.3 下载支付宝集成SDK(无线移动版)放到我们的应用中
1.4 开始编写代码
1.4.1 编辑商品信息
AlixPayOrder *order = [[AlixPayOrder
alloc] init];
order.productName =
商品名称;
order.productDescription =
商品描述;
order.partner =
合作者身份ID;
order.seller =
卖家支付宝账号;(卖家唯一标示)
order.amount =
支付金额;
1.4.2 订单信息加密
首先利用商户私钥生成一个对象,然后用这个对象加密订单信息。
id<DataSigner>signer =
CreateRSADataSigner(商户私钥);
NSString *signedString = [signer
signString:[order description]];
1.4.3 组合订单信息
NSString *orderString = [NSString
stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
[order description], signedString,
@"RSA"];
1.4.4 开始进行订单支付
参数1 订单信息
参数2 网页支付 回调APPscheme
参数3 回调方法
参数4 回调对象
[AlixLibService
payOrder:orderString AndScheme:@"tuangou"
seletor:@selector(getResult:)target:self];
1.4.5 支付完成处理
支付完成处理分为两种情况,一种是网页支付处理,一种是客户端支付处理
如果是客户端版:(意思就是从支付宝的客户端跳转回这个App)
在AppDelegate中使用回调方法:
- (BOOL)application:(UIApplication*)application openURL:(NSURL *)urlsourceApplication:(NSString*)sourceApplication
annotation:(id)annotation
在这里处理相应的逻辑:
支付结果验证逻辑可以参考支付宝的SDKdemo,基本不用修改神马。
AlixPayResult * result =
nil;
if (url !=
nil && [[urlhost]
compare:@"safepay"] ==
0) {
NSString * query = [[url
query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
#if ! __has_feature(objc_arc)
result = [[[AlixPayResultalloc] initWithString:query] autorelease];
#else
result = [[AlixPayResult
alloc] initWithString:query];
#endif
}
if (result.statusCode ==
9000) {
将支付时候的私钥与现在的公钥进行配对。
id<DataVerifier> verifier =
CreateRSADataVerifier(AlipayPubKey);
if ([verifier
verifyString:result.resultString
withSign:result.signString]) {
验证信息有效
} else {
// 失败
}
} else {
// 失败
}
return YES;
如果是网页版 回调方法参考1.4.4. 这里就不多说了。处理逻辑参考上面的代码。有一点需要注意:URL Scheme:
Target info中添加这个Scheme
相关文章推荐
- iOS常见的格式输出类型
- ios 后退指定 跳转
- iOS 给任意一个view转换为image的方法封装
- iOS 文字属性
- iOS——常用开发工具
- iOS xcode 工程 项目 代码行数统计
- iOS开发 iOS8 分割线右移15像素 将其归零
- iOS SDK详解之IBInspectable和IB_DESIGNABLE-Storyboad动态刷新
- ios 基础数据类型
- 使用vmstat,iostat查看系统性能
- 【精】iOS GCD 详解
- ios弹出软键盘时fixed失效及点击空白处隐藏层的解决办法
- 30多个iOS常用动画,带详细注释
- [iOS]调用系统相机,相册,闪光灯
- iOS自动检查更新
- iOS开发系列--地图与定位
- iOS颜色16进制值转换RGB
- IOS开发笔记-01按钮操作-03.加法计算器界面搭建
- iOS 开发的9个超有用小技巧
- ios开发之视频播放