美文网首页
iOS-支付宝集成流程

iOS-支付宝集成流程

作者: 宇轩Simid | 来源:发表于2019-11-18 12:02 被阅读0次

支付流程:

用户支付流程.png

集成流程

1. 创建应用

平台包括:iOS、安卓、双平台。

需要填写信息:应用名称、应用简介、iOS bundle ID、android应用包名、android签名、支付宝网关、应用网关(选填)、授权回调地址、接口内容加密方式(一般使用AES)。

添加功能:App支付、web支付、快捷手机web支付、刷脸支付等功能。

以上信息需要审核通过才能分配AppID

2. 集成方式

集成方式:通过 CocoaPods 导入、手动导入。

CocoaPods:在Podsfile文件中加入pod 'AlipaySDK-iOS',然后pod install

手动导入:需要把资源包和SDKAlipaySDK.bundleAlipaySDK.framework导入工程中。

这里有个问题:不同版本SDK对应不同的场景,目前两种SDK,一种是集成了UTDID库,一种是没有集成UTDID库,有其他三方SDK(友盟安全组件SDK)也包含UTDID库,导致同一个库重复引用

添加依赖库:

在 Build Phases 选项卡的 Link Binary With Libraries 中,增加以下依赖:libc++.tbdlibz.tbdSystemConfiguration.frameworkCoreTelephony.frameworkQuartzCore.frameworkCoreText.frameworkCoreGraphics.frameworkUIKit.frameworkFoundation.frameworkCFNetwork.frameworkCoreMotion.framework,最后还需要把AlipaySDK.framework也加入依赖库。

需要注意:添加依赖库除AlipaySDK.framework都是系统依赖库,可以直接查找到,三方或私有依赖库需要手动拖入

这里,集成就已经完成

3. 开发:
先了解一下支付宝工作流程:

工作流程.png

在需要的支付的类中添加头文件:

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

其中需要注意的点:

  1. 需要摘取demo中的订单信息 Order(订单)、Authinfo(授权信息)类,其中支付宝写好的属性和写好的商品信息拼接方法可以直接调用。
  2. 私钥一定要放在服务器,从服务器获取私钥签名过的信息。
  3. 调起支付宝时需要传入 Url scheme,要区分其他App,有一定个性化标识度。否则支付宝无法跳回自己的App。

配置返回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;
}

需要注意:

  1. 位置在Appdelegate中,app 代理回调中,此方法是适用iOS9以后App处理方式,现在一般都适配iOS9以上。
  2. 支付完成后回到自己App中的处理方式。
  3. 所有的从第三方应用回跳后都走这个方法,通过不同三方app的url进行判断,做不同的操作。

完成!

调研支付宝处理商品信息规则:

  1. 把商品信息转jsonString。
  2. 把订单信息和商品信息通过key进行a~z的排序拼接,转为jsonString。
  3. 把jsonString通过签名加密,赋值给sign。
  4. 把赋值好的sign拼接在已经存在的jsonString后,通过支付宝API调起支付宝。

相关文章

  • iOS-支付宝集成流程

    支付流程: 集成流程: 1. 创建应用 平台包括:iOS、安卓、双平台。 需要填写信息:应用名称、应用简介、iOS...

  • iOS- 收藏 (专题文章分类)

    支付宝/ 微信 / 银联 1. iOS 支付宝详细集成总结2. 支付宝3. iOS-微信支付和支付宝支付4. ...

  • iOS 支付宝支付

    支付宝支付流程 支付宝的集成按着官方文档来 ios支付宝集成流程 签名呀注册AppKey 我们是由后台完成的App...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • android 支付宝 接入流程总结

    支付宝接入流程 支付宝开发文档android集成流程新版支付宝接入流程 导入开发资源 将alipaySdk-xxx...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • 支付宝集成

    支付宝集成 一、相关文档 1. SDK集成流程 2. SDK下载地址 二、SDK集成流程 1. 2. 3. 自己制...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • 支付宝支付

    按照“支付宝开放平台”的“iOS集成流程”进行集成:https://docs.open.alipay.com/20...

  • 支付宝支付

    按照“支付宝开放平台”的“iOS集成流程”进行集成:https://docs.open.alipay.com/20...

网友评论

      本文标题:iOS-支付宝集成流程

      本文链接:https://www.haomeiwen.com/subject/egvvictx.html