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

iOS 集成支付宝 ---- swift

作者: 令狐灵犀 | 来源:发表于2016-11-25 13:33 被阅读562次

1. 准备工作

签约与审核
PID 和 密钥管理
  • 1 登录支付宝官方网站b.alipay.com 点击导航栏中“商家服务,即可查询 PID
  • 2 生成公钥和私钥
  • 3 RSA加密

2. SDK 下载

首先从支付宝开放平台下载SDK. 解压后的目录下包含「服务端demo」和「客户端demo」。「客户端demo」包含了集成支付宝所需要的所有文件。

3. 交易流程

  • 1 首先是用户在App上面下订单,同时App请求服务端API,服务端接收到POST请求后生成相应的订单,记录到DB,然后将订单信息返回到。
  • 2 App接收到返回订单信息后,在客户端生成符合支付宝API要求 的数据请求。其中就包括notify URL,这个URL必须是外网可以访问的,目的是用来接收支付宝支付成功后的反馈。
  • 3 App调用支付宝支付API。
  • 4 支付成功或失败后返回App,并根据返回结果给用户相应反馈信息。
  • 5 如果支付成功后,支付宝服务器会调用第2步提到的 notify URL. 这个notify URL需要在你自己的服务器端实现相应功能,用来接受支付宝服务器发送的支付成功的通知,并将相应订单标记为已经支付。
  • 流程图如下:

4. 关联库

  • 1 启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。

    (1)AlipaySDK.bundle

    (2)AlipaySDK.framework

    (3)在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:


  • 2 新建一个Bridging-Header.h文件,并把该文件的路径添加到 Build Settings => Objective-C Bridging Header。然后在该文件中添加下面两行.

<pre><code>

import < AlipaySDK/AlipaySDK.h>

import "RSADataSigner.h"

</code></pre>

5. code

  • 1 配置请求信息
    <pre><code>
    let aliOrder = AlipayOrder(partner: AlipayPartner, seller: AlipaySeller, tradeNO: order.id, productName: order.title, productDescription: order.content, amount: order.price, notifyURL: AlipayNotifyURL, service: "mobile.securitypay.pay", paymentType: "1", inputCharset: "utf-8", itBPay: "30m", showUrl: "m.alipay.com", rsaDate: nil, appID: nil)
    let orderSpec = aliOrder.description //orderA.description
    
    let signer = RSADataSigner(privateKey: AlipayPrivateKey)
    let signedString = signer.signString(orderSpec)
    
    let orderString = "\(orderSpec)&sign=\"\(signedString)\"&sign_type=\"RSA\""
    
    print(orderString)
            AlipaySDK.defaultService().payOrder(orderString, fromScheme: AppScheme, callback: {[weak self] resultDic in
        if let strongSelf = self {
            print("Alipay result = \(resultDic as Dictionary)")
            let resultDic = resultDic as Dictionary
            if let resultStatus = resultDic["resultStatus"] as? String {
                if resultStatus == "9000" {
                    strongSelf.delegate?.paymentSuccess(paymentType: .Alipay)
                    let msg = "支付成功!"
                    let alert = UIAlertView(title: nil, message: msg, delegate: nil, cancelButtonTitle: "好的")
                    alert.show()
                    //strongSelf.navigationController?.popViewControllerAnimated(true)
                } else {
                    strongSelf.delegate?.paymentFail(paymentType: .Alipay)
                    let alert = UIAlertView(title: nil, message: "支付失败,请您重新支付!", delegate: nil, cancelButtonTitle: "好的")
                    alert.show()
                }
            }
        }
        })

</code></pre>

  • 2 配置支付宝客户端返回url处理方法
    <pre><code>
    //跳转支付宝钱包进行支付,处理支付结果
    AlipaySDK.defaultService().processOrderWithPaymentResult(url, standbyCallback: { (resultDict:[NSObject : AnyObject]!) -> Void in
    print("openURL result: (resultDict)")
    })
    </code></pre>

通知服务器支付成功

如果支付成功后,支付宝服务器会向你的服务器 notify URL 发起支付成功的请求。这样就可以在服务端实现一些相关的业务逻辑,比如标记订单为已支付,发短信给用户等.

参考 :

相关文章

  • iOS&Android集成支付宝-server篇(PHP

    iOS&Android集成支付宝-server篇(PHP) 在上一篇文章《iOS集成支付宝-Swift版》中,我介...

  • iOS集成支付宝-Swift版

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

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • ios支付宝签名

    支付宝: iOS 支付功能概述 - 简书 1.iOS集成支付宝 - 简书 2.iOS 集成支付宝 - 简书 3.i...

  • 文章汇总

    ios iOS 网络篇 网络基础总结 支付宝集成 iOS支付宝支付集成 - demo例子集 - 博客园 理解 iO...

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • Swift 中的 weex

    weex ios 集成参阅:Weex学习与实践:iOS原理篇 swift集成weex 首先将weexsdk集成到项...

  • 集成支付、第三方登录知识总结

    1、玩转iOS开发:集成 WeChat SDK - 支付篇2、玩转iOS开发:集成 AliPay - 支付宝

  • iOS支付宝功能集成

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

  • iOS 集成支付宝 ---- swift

    1. 准备工作 签约与审核 1 商户在b.alipay.com里进行产品签约 2 商户登录qy.alipay.co...

网友评论

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

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