1. 建立应用android
平台包括:iOS、安卓、双平台。c++
须要填写信息:应用名称、应用简介、iOS bundle ID、android应用包名、android签名、支付宝网关、应用网关(选填)、受权回调地址、接口内容加密方式(通常使用AES)。web
添加功能:App支付、web支付、快捷手机web支付、刷脸支付等功能。objective-c
以上信息须要审核经过才能分配AppIDexpress
2. 集成方式json
集成方式:经过 CocoaPods 导入、手动导入。安全
CocoaPods:在Podsfile文件中加入pod 'AlipaySDK-iOS'
,而后pod install
。服务器
手动导入:须要把资源包和SDKAlipaySDK.bundle
、AlipaySDK.framework
导入工程中。app
这里有个问题:不一样版本SDK对应不一样的场景,目前两种SDK,一种是集成了UTDID库,一种是没有集成UTDID库,有其余三方SDK(友盟安全组件SDK)也包含UTDID库,致使同一个库重复引用。测试
添加依赖库:
在 Build Phases 选项卡的 Link Binary With Libraries 中,增长如下依赖:libc++.tbd
、libz.tbd
、SystemConfiguration.framework
、CoreTelephony.framework
、QuartzCore.framework
、CoreText.framework
、CoreGraphics.framework
、UIKit.framework
、Foundation.framework
、CFNetwork.framework
、CoreMotion.framework
,最后还须要把AlipaySDK.framework
也加入依赖库。
须要注意:添加依赖库除AlipaySDK.framework
都是系统依赖库,能够直接查找到,三方或私有依赖库须要手动拖入
这里,集成就已经完成
开发:
在须要的支付的类中添加头文件:
import <AlipaySDK/AlipaySDK.h>
复制代码
组装支付宝信息:
//将商品信息赋予AlixPayOrder的成员变量
Order* order = [Order new];
// NOTE: app_id设置
order.app_id = appID;
// NOTE: 支付接口名称
order.method = @"alipay.trade.app.pay";
// NOTE: 参数编码格式
order.charset = @"utf-8";
// NOTE: 当前时间点
NSDateFormatter* formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
order.timestamp = [formatter stringFromDate:[NSDate date]];
// NOTE: 支付版本
order.version = @"1.0";
// NOTE: sign_type设置
order.sign_type = @"RSA";
// NOTE: 商品数据
order.biz_content = [BizContent new];
order.biz_content.body = @"我是测试数据";
order.biz_content.subject = @"1";
order.biz_content.out_trade_no = [self generateTradeNO]; //订单ID(由商家自行制定)
order.biz_content.timeout_express = @"30m"; //超时时间设置
order.biz_content.total_amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品价格
//将商品信息拼接成字符串
NSString *orderInfo = [order orderInfoEncoded:NO];
NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
NSLog(@"orderSpec = %@",orderInfo);
// NOTE: 获取私钥并将商户信息签名,外部商户的加签过程请务必放在服务端,防止公私钥数据泄露;
// 须要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderInfo];
// 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);
}];
}
复制代码
其中须要注意的点:
配置返回Url的处理方法:
- (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);
}];
}
return YES;
}
复制代码
须要注意:
完成!
调研支付宝处理商品信息规则: