支付宝支付集成步骤和流程(Swift2.2)

支付宝支付集成步骤和流程

1 简述

  • 简单说就三个步骤:

      1.生成订单(可以在客户端生成,也可以在服务器端生成)
      2.调用支付宝支付接口,发送订单
      3.处理支付宝返回的支付结果
    

2.关于签名校验

  • 按理说,这些步骤完全够了,但是有一个安全性问题,你肯定不希望你接收的支付结果被截获修改,所以,这就需要在生成订单和处理支付结果的时候做一个安全性校验
  • 生成订单时对数据签名,收到支付结果时对数据进行签名校验,以校验数据是否被篡改过
  • 支付宝目前只支持RSA加密方式做签名校验,RSA加密算法,除了可加解密之外,还可以做签名校验,简单地说,RSA会生成一个私钥和一个公钥,私钥你应该独自保管,公钥你可以分发出去。做签名验证时,你可以用私钥对需要传输的数据做签名加密,生成一个签名值,之后分发数据,接收方通过公钥对签名值做校验,如果一致则认为数据无篡改
  • 具体到支付宝使用RSA做签名验证,就是在生产订单时,需要使用私钥生成签名值;在处理返回的支付结果时,需要使用公钥验证返回结果是否被篡改了

3.配置工程

3.1 导入SDK到工程中

3.2 添加系统静态依赖库

    SystemConfiguration.framework
    CoreTelephony.framework
    QuartzCore.framework
    CoreText.framework
    CoreGraphics.framework
    UIKit.framework
    Foundation.framework
    CFNetwork.framework
    CoreMotion.framework
    libc++.tbd
    libz.tbd

3.3 修改SDK的路径

target-build setting-Header Search Paths 

3.4 创建桥接文件

  • 预编译头文件

      #import <Foundation/Foundatio nh    
      #import <UIKit/UIK.it.h>
    
  • 支付宝头文件

      支付宝头文件
      #import "RSADataSigner.h"
      #import <AliPaySDK/AliPaySDK.h>
      #import "Order.h"
    

3.5 iOS9网络适配

<key>NSAppTransportSecurity</key>
    <dict>    
        <key>NSAllowsArbitraryLoads</key><true/>
    </dict>

3.6 设置应用Scheme

  • 设置Scheme,方便支付宝客户端能够将支付结果返回,尽量保证Scheme唯一

3.7 支付的实现

ViewController.swift

  • 实现支付需要用到的参数
支付参数 既定变量
商户ID partner
账户ID sellerID
资金总额 totalFee
交易说明 subject
商品的具体描述 body
  • 创建订单
// 创建订单
let order = Order()
// 商户id: 商户在支付宝签约时,支付宝为商户分配的唯一标识号(以2088开头的16位纯数字),订单支付金额将打入该账户,一个partner可以对应多个seller_id。
order.sellerID = seller
//订单号:商户网站商品对应的唯一订单号,是随机的(公司后台生成的)
order.outTradeNO = "20160923XXXX"
//资金总额:该笔订单的资金总额,单位为RMB(Yuan)。取值范围为[0.01,100000000.00],精确到小数点后两位
order.totalFee = "0.01"
//交易说明:
order.subject = "交易说明"
//商品的具体描述
order.body = "买的一部诺基亚手机"
  • 验证
// 获取商品的所有属性
let orderDes = order.description
 //使用私钥进行签名验证
let signer = CreateRSADataSigner(privateKey)       
//打包签名信息,参数是商品描述
let singerStr = signer.signString(orderDes)


//拼接商品信息
/*
1.商品描述
2.签名信息
3.签名方式:RSA
*/
let orderStr = String(format: "%@&sign=\"%@\"&sign_type=\"%@\"", orderDes,singerStr,"RSA")
  • 发起支付
参数 含义
参数1 商品拼接信息
参数2 url scheme(回调的唯一标示)
参数3 支付完成之后的回调
if singerStr != nil {
    AlipaySDK.defaultService().payOrder(orderStr, fromScheme: "AliPayDemo", callback: { (result) in
        print("支付结果:\(result)")
    })
}

  • 支付完成后的结果

      1.支付成功
      2.支付失败 
          余额不足
          网络问题
          用户取消支付
    

在实际项目中,支付宝支付会跟公司自己的服务器交互
支付宝支付有客户端支付和h5支付两种方式。会自动判断当前设备上是否安装有支付宝客户端


AppDelegate.swift

  • 处理客户端的回调
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    AlipaySDK.defaultService().processOrderWithPaymentResult(url) { (result) in
        print("回调结果:\(result)")
    }
    return true
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容