1.下载支付宝的SDK,建议下载之前的版本,最近更新的版本,按照文档集成完,会出现:支付密码输入完成后,提示“暂时无法获取订单信息,请稍后再试”的弹窗。(没发现撒解决办法,用之前的版本就可以完成支付)。
2.添加SDK到Xcode工程里
a.新建一个aliPaySDK文件夹,提取SDK包中以下文件到此文件夹里,在xcode中添加此文件夹。
两个版本的order类不一样,要从同一个下载包里面拖出来。
b.添加依赖库。请以官方文档为准,一下为参考。
3.编译项目,会出现以下问题:
a."Unknown type name ‘NSString‘ "或者"Unknown type name ‘NSData‘ "等不识别常见类的问题。
解决办法:只需要在出现错误的文件中导入这些类Foundation类库和UIKit类库即可。
b."openssl/asn1.h‘ file not found"
这是openssl文件夹头文件链接问题,如果openssl文件夹随意拉进项目中,即使添加头文件链接,也可能解决不了此问题,
这也是问什么一开始就将所需要的文件放到一个新建文件夹中再添加到项目中的原因。
解决办法:Targets->Build Settings->Header Search Path中添加1中建立的aliPaySDK文件夹的路径(拖拽此文件夹至输入框即可)
剩下就是拖Demo里面的代码了
设置支付事件:
partner 是合作者商户ID 2088开头
seller 是支付宝的账号
privateKey 是私钥,需要转码。一般都是服务器来返回,还有下面的订单信息,都是通过服务器来请求的。目前是测试支付能否完成,暂时写在app里面。
appScheme 设置官方文档建议:实际商户的app中要填写独立的scheme,建议跟商户的app有一定的标示度,要做到和其他的商户app不重复,否则可能会导致支付宝返回的结果无法正确跳回商户app。
这是在客户端直接拼接orderString,正常需要在服务器拼接订单数据和密钥等加密,如果有服务器返回的数据orderString,就只需要在需要调用支付的时候使用:
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
//9000为支付成功
NSLog(@"支付成功");
}
}];
切换到release版,编译报大量警告(warning:(arm64)……:No such file or directory)
警告可以消除,设置
但是,dSYM File这个东西是解析崩溃日志要用的,这样设置不是根本办法,只是能把警告消除掉。