IOS支付宝开发SDK的集成

来源:互联网 发布:网络摄像头不知道ip 编辑:程序博客网 时间:2024/04/30 06:23

一、什么是支付宝


第三方支付平台

和内购非常相似
内购是用户将钱付款给苹果,之后苹果分成给商户
支付宝是用户将钱付款给支付宝,之后支付宝将钱转入我们的账户

使用支付宝前提
购买的物品必须是和应用程序无关的.比如:团购卷/衣服/电子产品
如果和应用程序有关,必须采用内购(否则不允许上架).比如:会员/游戏道具

 

二、集成支付宝


现在不少app内都集成了支付宝功能

使用支付宝进行一个完整的支付功能,大致有以下步骤:
向支付宝申请, 与支付宝签约,获得商户ID(partner)和账号ID(seller)和私钥(privateKey)
下载支付宝SDK
生成订单信息,签名加密
调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
支付完毕后,支付宝客户端会自动跳回到原来的应用程序
在原来的应用程序中显示支付结果给用户看
技术分享

 

三、集成SDK注意事项


* 支付宝的SDK下载和百度、讯飞语言等SDK不一样,直接搜支付宝进入官网下载
* 支付宝下载(选择我是商户用户—>如何集成—>移动开发)
* 集成前查看demo
* 集成时需要用到的库

技术分享

 

* 集成之后可能遇到的问题

1)集成SDK编译时找不到 openssl/asn1.h 文件

技术分享
解决方案:Build Settings --> Search Paths --> Header Search paths : $(SRCROOT)/支付宝集成/Classes/Alipay

技术分享

 

2)链接时:找不到 SystemConfiguration.framework 这个库 
技术分享

解决方案
技术分享

 

 

四、具体代码


比如现在将产品展示在tableView上,选中时即购买此商品,集成支付宝的核心代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    // 1.取出模型对象    Product *product = self.products[indexPath.row];        // 2.购买商品    [self buyProduct:product];}- (void)buyProduct:(Product *)product{    // 1.添加写partner/seller/privateKey,签约后获得    NSString *partner = @"";    NSString *seller = @"";    NSString *privateKey = @"";            // 2.生成订单    // 2.1.创建订单    Order *order = [[Order alloc] init];        // 2.2.设置商户ID/账号ID    order.partner = partner;    order.seller = seller;        // 2.3.设置订单号    order.tradeNO = nil;        // 2.4.设置产品相关的信息    order.productName = product.title;    order.productDescription = product.detail;    order.amount = [NSString stringWithFormat:@"%.2f", product.price];        // 2.5.设置订单常量    order.service = @"mobile.securitypay.pay";    order.paymentType = @"1";    order.inputCharset = @"utf-8";    order.itBPay = @"30m";    order.showUrl = @"m.alipay.com";        // 2.6.回调URL(异步通知服务器的地址)    order.notifyURL =  @"http://www.xxx.com"; //回调URL        // 2.7.将订单信息拼接成字符串    NSString *orderSpec = [order description];        // 3.对订单进行签名加密    // 3.1.对订单进行加密    id<DataSigner> signer = CreateRSADataSigner(privateKey);    NSString *signedString = [signer signString:orderSpec];        // 3.2.将签名成功字符串格式化为订单字符串,请严格按照该格式    NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"];        // 4.打开支付宝客户端进行支付(用户没有安装支付宝客户端,直接在应用程序中添加一个WebView,通过网页让用户进行支付)    // 注意:如果是通过网页支付完成,那么会回调该block:callback    [[AlipaySDK defaultService] payOrder:orderString fromScheme:@"jingdong" callback:^(NSDictionary *resultDic) {            }];}

AppDelegate.m

// 当通过别的应用程序,将该应用程序打开时,会调用该方法- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{    // 当用户通过支付宝客户端进行支付时,会回调该block:standbyCallback    [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {        NSLog(@"result = %@",resultDic);    }];        return YES;}
另一个参考网址:http://www.jianshu.com/p/fe56e122663e
0 0
原创粉丝点击