AlipaySDK官方地址


https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Ecl0Yc&treeId=59&articleId=103676&docType=1

蚂蚁金服开放平台 - 文档中心 


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

1

2AlipaySDK.bundle

AlipaySDK.framework

在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:

其中,需要注意的是:

如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;

如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)。

步骤2:在需要调用AlipaySDK的文件中,增加头文件引用。

1

#import

步骤3:如果你的app基于9.0编译,那么为了适配iOS9.0中的App Transport

Security(ATS)对http的限制,这里需要对支付宝的请求地址alipay.com、alipayobjects.com做例外,在app对

应的info.list中添加如下配置(文中以XML格式描述)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28NSAppTransportSecurity

NSExceptionDomains

alipay.com

NSIncludesSubdomains

NSTemporaryExceptionAllowsInsecureHTTPLoads

NSTemporaryExceptionMinimumTLSVersion

TLSv1.0

NSTemporaryExceptionRequiresForwardSecrecy

alipayobjects.com

NSIncludesSubdomains

NSTemporaryExceptionAllowsInsecureHTTPLoads

NSTemporaryExceptionMinimumTLSVersion

TLSv1.0

NSTemporaryExceptionRequiresForwardSecrecy

说明:

如果商户配置了如下的配置:

1

2

3

4NSAppTransportSecurity

NSAllowsArbitraryLoads

则上述的NSAppTransportSecurity可以不配置。

步骤4:配置请求信息。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38Order *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.test.com"; //回调URL

order.service = @"mobile.securitypay.pay";

order.paymentType = @"1";

order.inputCharset = @"utf-8";

order.itBPay = @"30m";

//应用注册scheme,在AlixPayDemo-Info.plist定义URL types

NSString *appScheme = @"alisdkdemo";

//将商品信息拼接成字符串

NSString *orderSpec = [order description];

NSLog(@"orderSpec = %@",orderSpec);

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

id signer = CreateRSADataSigner(privateKey);

NSString *signedString = [signer signString:orderSpec];

//将签名成功字符串格式化为订单字符串,请严格按照该格式

NSString *orderString = nil;

if(signedString != nil) {

orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString, @"RSA"];

[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

//【callback处理支付结果】

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

}];

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}

详细可参见Demo中示例文件

AliSDKDemo\APViewController.h

AliSDKDemo\APViewController.m

AliSDKDemo\Order.h

AliSDKDemo\Order.m

步骤5:配置支付宝客户端返回url处理方法。

(外部存在支付包钱包,支付宝钱包将处理结果通过url返回。)

如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代码:

1

#import

在@implementation AppDelegate中增加如下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19- (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) {

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

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

}];

}

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

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

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

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

}];

}

returnYES;

}

你可能感兴趣的:(AlipaySDK官方地址)