神刀安全网

iOS 快速集成支付宝

前期准备

  1. 接入前期准备工作包括商户签约和密钥配置,已完成商户可略过。
  2. 下载支付宝SDK 支付宝SDK下载地址

SDK集成流程

  1. 将支付宝SDK中以下文件拷贝到项目文件夹下,并导入开发环境中。 AlipaySDK.bundle
    AlipaySDK.framework
    libcrypto.a
    libssl.a
    AliSDKDemo/Util 及下面所有文件
    AliSDKDemo/openssl 及下面所有文件
    Order.hOrder.m
  2. 导入系统依赖库在link Binary With Libraries 里面添加
    CoreMotion.framework
    CFNetwork.framework
    SystemConfiguration.framework
    QuartzCore.framework
    CoreText.framework
    CoreTelephony.framework
    CoreGraphics.framework
    libc++.tbd
    libz.tbd 加上之前导入的3个 AlipaySDK.framework
    libcrypto.a
    libssl.a 共计12个
  3. 在需要使用SDK的文件中,增加头文件引用。
#import <AlipaySDK/AlipaySDK.h> #import "Order.h" #import "DataSigner.h" #import <AliPaySDK/AlipaySDK.h> 

但是会出现错误:

iOS 快速集成支付宝

这是为什么呢,原因是项目没有找到之前导入的 AliSDKDemo/Util 及下面所有文件AliSDKDemo/openssl 及下面所有文件 头文件,解决方法 在项目文件夹中找到 Utilopenssl 文件夹 ,在Header Search Paths中添加路径

iOS 快速集成支付宝

到这一步,SDK集成已经完毕

配置代码

  • 配置alipay支付
#pragma mark   ==============配置alipay支付============== - (void)payAction {     /*      *生成订单信息及签名      */     //将商品信息赋予AlixPayOrder的成员变量     Order *order = [[Order alloc]init];     order.partner = @"";//商户在支付宝签约时,支付宝为商户分配的唯一标识号(以2088开头的16位纯数字)。     order.sellerID = @"";////卖家支付宝账号对应的支付宝唯一用户号(以2088开头的16位纯数字),订单支付金额将打入该账户,一个partner可以对应多个seller_id。     order.outTradeNO = [self generateTradeNO]; //订单ID(由商家自行制定)     order.subject = @"测试商品"; //商品的标题/交易标题/订单标题/订单关键字等。     order.body = @"runbey商品描述"; //对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。     order.totalFee = @"0.01"; //该笔订单的资金总额,单位为RMB(Yuan)。取值范围为[0.01,100000000.00],精确到小数点后两位。     order.notifyURL =  @"http://*****"; //支付宝服务器主动通知商户网站里指定的页面http路径。       //实际项目开发中 订单信息应该由服务器返回         order.service = @"mobile.securitypay.pay";     order.paymentType = @"1";     order.inputCharset = @"utf-8";     order.itBPay = @"30m";     order.showURL = @"m.alipay.com";       //应用注册scheme 便于支付结束后重新打开客户端     NSString *appScheme = @"";       //将商品信息拼接成字符串     NSString *orderSpec = [orderdescription];     NSLog(@"orderSpec = %@",orderSpec);       //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode       NSString * privateKey = @"";//商户私钥       id<DataSigner> signer = CreateRSADataSigner(privateKey);     NSString *signedString = [signersignString:orderSpec];       //将签名成功字符串格式化为订单字符串,请严格按照该格式     NSString *orderString = nil;     if (signedString != nil) {         orderString = [NSStringstringWithFormat:@"%@&sign=//"%@//"&sign_type=//"%@//"",                       orderSpec, signedString, @"RSA"];           NSLog(@"签名字符串:%@",orderString);           [[AlipaySDK defaultService]payOrder:orderStringfromScheme:appSchemecallback:^(NSDictionary *resultDic) {             NSLog(@"支付结果reslut = %@",resultDic);         }];     } }   #pragma mark   ==============产生随机订单号==============   - (NSString *)generateTradeNO {     static int kNumber = 15;       NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";     NSMutableString *resultStr = [[NSMutableString alloc]init];     srand((unsigned)time(0));     for (int i = 0; i < kNumber; i++)     {         unsigned index = rand() % [sourceStrlength];         NSString *oneStr = [sourceStrsubstringWithRange:NSMakeRange(index, 1)];         [resultStrappendString:oneStr];     }     return resultStr; } 

此时运行,这2个文件:

base64.h openssl_wrapper.h

会出现:

Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’

那么需要打开的文件 base64.h openssl_wrapper.h ,顶部添加头:

#import <Foundation/Foundation.h> 

  • 配置返回处理代码

    在 AppDelegate.m 文件中,增加引用代码:

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplicationannotation:(id)annotation {     //如果极简 SDK 不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给 SDK     if ([url.hostisEqualToString:@"safepay"])     {     [[AlipaySDK defaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary *resultDic) {         NSLog(@"result = %@",resultDic);     }];     }     return YES; } 

  • 添加URL Schemes

    点击项目名称,点击“Info”选项卡,在“URL Types”选项中,点击“+”, 在“URL Schemes”中输入项目的bundleid。“bundleid”来自于 NSString *appScheme = @”****”(一般为项目的bundleid)

iOS 快速集成支付宝

c1000

至此,完成了支付宝iOS客户端的配置

微信支付撰写中。。。。

后记:

有朋友反馈,运行时在 rsa.h 中,会出现:

iOS 快速集成支付宝

解决方法:

在在项目文件夹中找到找到和 项目同名 的文件夹 ,在Header Search Paths中添加路径

一样把文件夹拖进去!

iOS 快速集成支付宝

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » iOS 快速集成支付宝

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址