ios支付宝支付

时间:2022-12-20 18:40:51

1.首先下载支付宝SDK    AlipaySDK.bundleAlipaySDK.framework(去支付宝SDK官网下载最新SDK,具体以支付宝SDK介绍为准)

2.添加依赖库ios支付宝支付

其中,需要注意的是:

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

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


3.创建prefix header filePCH文件,添加#import <Foundation/Foundation.h>,在Build Settings中的prefix header设置pch文件路径


4.在Build SettingsHeader Search Paths添加头文件引用路径,[文件路径]/AlipaySDK/


5.在需要调用AlipaySDK的文件中,增加头文件引用

#import  <AlipaySDK/AlipaySDK.h>
#import "Order.h"
#import "DataSigner.h"

6.生成订单信息及签名

//将商品信息赋予AlixPayOrder的成员变量
Order *order = [[Order alloc] init];
order.partner = PartnerID; // 商户ID
order.seller = SellerID; // 账号ID
order.tradeNO = @"20150923"; //订单ID(由商家自行制定)
order.productName = @"iPhone6s"; //商品标题
order.productDescription = @"新年打折"; //商品描述
order.amount = @"0.01"; //商品价格(单位:元)
order.notifyURL = @"http://www.chaosky.me"; //回调URL,支付成功或者失败回调通知自己的服务器进行订单状态变更
order.service = @"mobile.securitypay.pay";
order.paymentType = @"1";
order.inputCharset = @"utf-8";
order.itBPay = @"30m";
order.showUrl = @"m.alipay.com";

// 应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString *appScheme = @"AliPayDemo";

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

//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(PartnerPrivKey);
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) {
NSLog(@"reslut = %@",resultDic);
}];
}

7.Xcode设置URL scheme

    URL Scheme值为代码中对应的值,必须一致

ios支付宝支付

8.APPDelegate.m中处理支付宝返回的url

  添加头文件  #import <AlipaySDk/AlipaySDk.h>

  然后添加下面代码

 (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);        }];    }    return YES;}

大  功  告  成