ios-支付宝支付sdk使用注意事项
2017-03-04 15:28
405 查看
最近在开发ios的手机支付,途中碰到的种种疑难杂症,现在记录一下,以免以后再重犯:
以上是支付宝有介绍的,不多说,注意除了上面的sdk之外,还必须要有两个a文件支持,否则报错
缺少两个A文件,项目运行会报错,这两个a文件可以在支付宝给的demo里面找到,有一点必须的说坑,你直接下载的支付宝sdk是不能用的,用了会报错,这个和其他开发者的反馈一样,只要置换demo里面的那两个framework、bundle文件就OK了,导入demo的时候可能会报一些错误,不用紧张,只是没有导入相关的头文件而已
9cce
点iOS 支付宝 ’openssl/asn1.h' file not found 的问题解决办法
if (signedString != nil) {
//应用注册scheme,在AliSDKDemo-Info.plist定义URL types
NSString *appScheme = @"alisdkdemo";
// NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
orderInfoEncoded, signedString];
// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
}
NSLog(@"reslut = %@",resultDic);
}];这里得到结果的,它回调已经改变成了在appdelegate.m里面去实现,你只需要在里面加上相关代码(我从支付宝demo里面直接复制的,其实你们可以多点参考demo):
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
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?:@"");
}];
}
return YES;
}
// 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?:@"");
}];
}
return YES;
}
第六:额~暂时没想到还缺什么,以后再补,有什么问题可以直接评论,楼主有空回复
一、使用的SDK
以上是支付宝有介绍的,不多说,注意除了上面的sdk之外,还必须要有两个a文件支持,否则报错
linker command failed with exit code 1
缺少两个A文件,项目运行会报错,这两个a文件可以在支付宝给的demo里面找到,有一点必须的说坑,你直接下载的支付宝sdk是不能用的,用了会报错,这个和其他开发者的反馈一样,只要置换demo里面的那两个framework、bundle文件就OK了,导入demo的时候可能会报一些错误,不用紧张,只是没有导入相关的头文件而已
#
import
<Foundation/Foundation.h>
9cce
第二:有关于openssl的路径地址(不配置会报错的,具体错误忘记了,以后补上):
openssl其实就是一个文件夹,放在与代码等级目录就好,然后按照支付提示的去配置路径,这里给个参考博客,我这是看着来弄的点iOS 支付宝 ’openssl/asn1.h' file not found 的问题解决办法
第三:文件重复引用(个人的小错误,顺便记录一下,大家可以直观第四点)
在开发集成支付宝sdk的时候,因为在某个文件头引入了.m文件,导致我的项目一直都在报相同文件错误,搞了很久才发现这个的:第四:应用注册scheme,在AliSDKDemo-Info.plist定义URL types,这一步不能忘记,不然的话是没有办法支付完之后回调到你的程序里面,贴上支付宝提供的示例代码:
// NOTE: 如果加签成功,则继续执行支付if (signedString != nil) {
//应用注册scheme,在AliSDKDemo-Info.plist定义URL types
NSString *appScheme = @"alisdkdemo";
// NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
orderInfoEncoded, signedString];
// NOTE: 调用支付结果开始支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
}
第五:有关于回调处理:支付宝回调不会在
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {NSLog(@"reslut = %@",resultDic);
}];这里得到结果的,它回调已经改变成了在appdelegate.m里面去实现,你只需要在里面加上相关代码(我从支付宝demo里面直接复制的,其实你们可以多点参考demo):
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
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?:@"");
}];
}
return YES;
}
// 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?:@"");
}];
}
return YES;
}
第六:额~暂时没想到还缺什么,以后再补,有什么问题可以直接评论,楼主有空回复
相关文章推荐
- 【读书笔记】iOS-使用应用内支付注意事项
- 【读书笔记】iOS-使用应用内支付注意事项
- iOS -- 支付宝SDK 的使用(支付功能)
- iOS:使用集成的支付宝SDK的支付流程
- 关于使用百度地图的IOS SDK 的注意事项
- IOS 使用支付宝的注意事项
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(一)
- iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码
- iOS开发支付宝 集成SDK注意事项
- iOS支付宝支付,,,实现步骤及注意事项
- android接入支付宝sdk使用注意事项
- IOS 中NSTimer使用注意事项
- 整理啦一下ios中银联(含有支付流程)和支付宝的使用
- iOS---touch使用注意事项
- ios支付宝SDK的使用说明
- 【ios】(ARC) 使用ARC的注意事项总结
- iOS 支付宝 SDK 支付完毕后返回APP的方法
- 【iOS开发-34】自动释放池@autoreleasepool的使用注意事项以及ARC机制——面试必考内容
- iOS应用内支付(IAP)的注意事项