iOS 支付宝 的学习总结

释放双眼,带上耳机,听听看~!

1. 工欲善其事必先利其器

支付宝demo下载地址: https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.4KLWNn&treeId=193&articleId=105295&docType=1

1. 导入代码
步骤1: 启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,

并导入到项目工程中。

     依赖添加完毕后,如下图所示结构。

 

图5-1添加依赖
步骤2: 在需要调用AlipaySDK的文件中,增加头文件引用。

         #import <AlipaySDK/AlipaySDK.h>

步骤3: 配置请求信息。

Order *order = [[Order alloc] init];
order.partner = partner;
order.seller = seller;
order.tradeNO = [self generateTradeNO]; //订单ID(由商家□自□行制定)order.productName
= product.subject; //商品标题order.productDescription = product.body; //商品描述

order.amount = [NSString stringWithFormat:@”%.2f”,product.price]; //商品价格
order.notifyURL = @”http://www.xxx.com”; //回调URL
order.service = @”mobile.securitypay.pay”;

order.paymentType = @"1";
order.inputCharset = @"utf-8";
order.itBPay = @"30m";

//应用注册scheme,在AlixPayDemo-Info.plist定义URL
typesNSString *appScheme = @”alisdkdemo”;

//将商品信息拼接成字符串
NSString *orderSpec = [order description];NSLog(@”orderSpec = %@”,orderSpec);

//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA
签名规范,并将签名字符串base64
编码和 UrlEncode

id<DataSigner> signer = CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderSpec];

//将签名成功字符串格式化为订单字符串,请严格按照该格式NSString
*orderString = nil;
if (signedString != nil) {

orderString = [NSStringstringWithFormat:@”%@&sign=”%@”&sign_type=”%@””,

                   orderSpec, signedString, @"RSA"];

[[AlipaySDK defaultService] payOrder:orderString fromScheme:appSchemecallback:^(NSDictionary *resultDic) {
//【callback处理支付结果】

          NSLog(@"reslut = %@",resultDic);

}];

[tableView deselectRowAtIndexPath:indexPath animated:YES];}

详细可参见 Demo中示例文件

AliSDKDemoAPViewController.hAliSDKDemoAPViewController.mAliSDKDemoOrder.h
AliSDKDemoOrder.m

步骤4: 配置支付宝客户端返回url处理方法。(外部存在支付包钱包,支付宝钱包将处理结果通过url
返回。)如示例AliSDKDemoAPAppDelegate.m文件中,增加引用代码:#import
<AlipaySDK/AlipaySDK.h>
在@implementation AppDelegate中增加如下代码:

– (BOOL)application:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

//如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包

if ([url.host isEqualToString:@”safepay”]) {
[[AlipaySDK defaultService] processOrderWithPaymentResult:url

standbyCallback:^(NSDictionary *resultDic) {

//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方

法里面处理跟callback一样的逻辑】NSLog(@”result
= %@”,resultDic);

}];}

if ([url.host isEqualToString:@”platformapi”]){//支付宝钱包快登授权返回authCode

[[AlipaySDK defaultService] processAuthResult:urlstandbyCallback:^(NSDictionary *resultDic) {

//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】

          NSLog(@"result = %@",resultDic);
}];

}

return YES;}

 

2.注意事项

支付宝比较牛, 他是没有文档使用步骤的,一切都要靠自己摸索, 运气好的话还行, 运气差得话就听天由命了.

首先: 

(1) 关于签名代码问题

  •  AliSDKDemoUtil及下面所有文件
  •  AliSDKDemoopenssl及下面所有文件
  •  libcrypto.a
  •  libssl.a

    这些文件是为示例签名所在客户端本地使用。出于安全考虑,请商户尽量把私钥保存在服务端,在服务端进行签名验签。

    (2) 如果遇到运行后报错,类似于以下提示信息:
    Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’

    那么需要打开报错了的文件,增加头文件。
    
    #import <Foundation/Foundation.h>
    

    (3) 如果商户要在某个文件中使用支付宝的开发包类库,需增加引用头文件。#import
    <AlipaySDK/AlipaySDK.h>

(4) 点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索,对“Header
Search Paths”增加头文件路径:$(SRCROOT)/项目名称。如果头文件信息已增加,可不必再增加。

 

图5-2增加头文件信息

(5) 点击项目名称,点击“Build Phases”选项卡,在“Link
Binary with Librarles”选项中,新增“AlipaySDK.framework”和“SystemConfiguration.framework”两个系统库文件。如果商户项目中已有这两个库文件,可不必再增加。

图5-3增加系统库文件

支付宝(中国)网络技术有限公司 版权所有|版本:1.3第
12页

支付宝钱包支付接口开发包 2.0 标准版附录文档

(6) 点击项目名称,点击“Info”选项卡,在“URL
Types”选项中,点击“+”,在“URL
Schemes”中输入“alisdkdemo”。“alisdkdemo”来自于文件“APViewController.m”的NSString
*appScheme = @”alisdkdemo”;。

图5-4配置
URL Schemes

3. 配置基本信息打开“APViewController.m”文件,对以下三个参数进行编辑

表5-1 IOS基本信息配置

NSString *partner = @"";
NSString *seller = @"";
NSString *privateKey = @"";

参数

含义

partner

合作身份者ID,以2088
开头由16
位纯数字组成的字符串。请参考“7.1如何获得PID与密钥”。

seller

支付宝收款账号,手机号码或邮箱格式。

private_key

商户方的私钥,pkcs8格式。请参考“7.2
RSA密钥生成与使用”。

 

人已赞赏
iOS文章

ios qq、微信分享和登录

2020-4-8 17:16:51

iOS文章

Mac 在Finder标题栏上显示完整路径

2020-4-12 10:01:48

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索