SDK篇

iOS swift 4.0 支付宝支付

2018-09-12  本文已影响0人  相百赛

iOS应用中调用支付宝支付的方法
默认后台已经对orderString进行处理,app中直接能拿到orderString,然后进行调用。
首先去支付宝官网下载iOSDemo,导入到工程中


image.png

然后在TARGETS点击General,找到Linked Frameworks and Libraries,导入如下的支付宝SDK的依赖库


image.png
然后在你的调用支付宝支付的界面,假设这里是选择支付宝跟微信支付,如下图
11536724470_.pic.jpg
因为微信的接下来做,这里先写支付宝的
AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme){
                        result in
                    }

调用支付宝支付就是这一句话
orderString是服务器返回的,appScheme是自己定义的,不能重复,需要在代码中定义

let appScheme = "yourappScheme"//你自己的appScheme

然后前往工程,TARGETS,Info下面的URL Types,新增一个


image.png

千万记住yourappScheme与 URL Schemes一致
为了拿到支付宝返回的数据,需要在AppDelegate.swift增加

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.host == "safepay"{
            AlipaySDK.defaultService().processOrder(withPaymentResult: url){
                value in
                let code = value!
                let resultStatus = code["resultStatus"] as!String
                var content = ""
                switch resultStatus {
                case "9000":
                    content = "支付成功"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPaySucceess"), object: content)
                case "8000":
                    content = "订单正在处理中"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayUnknowStatus"), object: content)
                case "4000":
                    content = "支付失败"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayDefeat"), object: content)
                case "5000":
                    content = "重复请求"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayDefeat"), object: content)
                case "6001":
                    content = "中途取消"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayDefeat"), object: content)
                case "6002":
                    content = "网络连接出错"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayDefault"), object: content)
                case "6004":
                    content = "支付结果未知"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayUnknowStatus"), object: content)
                default:
                    content = "支付失败"
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "aliPayDefeat"), object: content)
                    break
                }
            }
        }
        return true
    }

附上支付宝官方对于resultStatus的解释


image.png

NotificationCenter处是给你的viewController发消息,说明支付宝回调了数据
关于2018年最新的iOS支付宝支付就是这样,如果写的不好还请见谅~

上一篇下一篇

猜你喜欢

热点阅读