美文网首页iOS程序猿
swift3.0学习笔记(二) 支付宝集成

swift3.0学习笔记(二) 支付宝集成

作者: Pamela_Liu | 来源:发表于2016-11-25 21:18 被阅读717次
    • 现在不少app内都集成了支付宝功能,支付宝是用户将钱付款给支付宝,之后支付宝将钱转入商家的账户,购买的物品必须是和应用程序无关的.比如:团购卷/衣服/电子产品.注意如果和应用程序有关,必须采用内购(否则不允许上架).比如:会员/游戏道具
      今天我们就来看一下如何集成支付宝哒

    1.下载支付宝的SDK

    https://open.alipay.com/developmentAccess/developmentAccess.htm
    点击移动支付

    2.支付宝集成

    
            //1.填写申请到的商家ID/账号ID/私钥
    
            let partner = ""
    
            let seller = ""
    
            let privateKey = ""
    
    
            //2.生成订单信息及签名
    
            let order = Order()
    
            order.partner = partner
    
            order.sellerID = seller
    
            order.outTradeNO = "" //订单ID(由商家自行制定)
    
            order.subject = "" //商品标题
    
            order.body = "" //商品描述
    
            order.totalFee = String(format:"%.2f",998.0000) //商品价格
    
            order.notifyURL =  "http://www.xxx.com" //回调URL
    
            
    
            //固定值
    
            order.service = "mobile.securitypay.pay"
    
            order.paymentType = "1"
    
            order.inputCharset = "utf-8"
    
            order.itBPay = "30m"
    
            order.showURL = "m.alipay.com"
    
            
    
            //3.应用注册scheme,在AlixPayDemo-Info.plist定义URL types
    
            //当用户支付成功或者失败后,支付宝客户端会通过该客户端,调回到该URL,所以要配置URL Types
    
            let appScheme = "alisdkdemo"
    
            
    
            //4.将商品信息拼接成字符串
    
            let orderSpec = order.description
    
            // 5.对订单进行签名加密
    
            let signer = CreateRSADataSigner(privateKey)
    
            guard let signedString = signer?.sign(orderSpec) else { return }
    
            
    
            // 6.对订单进行格式化
    
            let orderString = String(format: "%@&sign=\"%@\"&sign_type=\"%@\"", [orderSpec, signedString, "RSA"])
    
    
            // 7.根据订单,调用支付宝的接口,让用户进行支付
    
            // 如果用户手机中没有安装支付宝客户端, 会弹出网页的支付宝进行支付
    
            // 该位置的支付结果就是用户使用网页支付时会回调的结果
    
            AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme, callback: { (dict : [AnyHashable : Any]?) -> Void in
    
                let tempDict = dict as? [String : Any]
    
                print(tempDict ?? "")
    
            })
    

    3.两个地方的回调结果的区别

    • 控制器中的回调 : 没有安装支付宝的客户,使用网页支付
    • Appdelegate : 调用支付宝的客户端,有结果时回调

    相关文章

      网友评论

      • Arang:请问可以共享下源码嘛

      本文标题:swift3.0学习笔记(二) 支付宝集成

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