iOS swift 4.0 支付宝支付
2018-09-12 本文已影响0人
相百赛
iOS应用中调用支付宝支付的方法
默认后台已经对orderString进行处理,app中直接能拿到orderString,然后进行调用。
首先去支付宝官网下载iOSDemo,导入到工程中
![](https://img.haomeiwen.com/i6157265/0260565682d59ebf.png)
然后在TARGETS点击General,找到Linked Frameworks and Libraries,导入如下的支付宝SDK的依赖库
![](https://img.haomeiwen.com/i6157265/929a25d9994afeda.png)
然后在你的调用支付宝支付的界面,假设这里是选择支付宝跟微信支付,如下图
![](https://img.haomeiwen.com/i6157265/9b17149e52328969.jpg)
因为微信的接下来做,这里先写支付宝的
AlipaySDK.defaultService().payOrder(orderString, fromScheme: appScheme){
result in
}
调用支付宝支付就是这一句话
orderString是服务器返回的,appScheme是自己定义的,不能重复,需要在代码中定义
let appScheme = "yourappScheme"//你自己的appScheme
然后前往工程,TARGETS,Info下面的URL Types,新增一个
![](https://img.haomeiwen.com/i6157265/dd9f8e60a24c4a8a.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的解释
![](https://img.haomeiwen.com/i6157265/ad5eab2d98742c13.png)
NotificationCenter处是给你的viewController发消息,说明支付宝回调了数据
关于2018年最新的iOS支付宝支付就是这样,如果写的不好还请见谅~