本文基于支付宝老版移动支付,不适用于新版App支付
本文未使用服务端签名,建议签名由服务端实现
导入AlipaySdk
本demo使用CocoaPods导入支付宝SDK,创建Brdging-Header.h文件(点击查看参考)
platform :ios, '10.0' target 'AlipayDemo-mobile' do source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' pod 'AlipaySDK-iOS' end
调用支付宝
var ALIPAY_NOTIFY_URL = "http://ape.ren/notify.html" //商户后台回调地址 var PARTNER = "2088xxxxxxx" //商户号 var SELLER = "xxxx@xxxx.com" //商户账号 var RSA_PRIVATE = "私匙"
func aliPay(){ let orderId = "test43241123" let price = 0.01 let body = "body43241123" let subject = "subject43241123" let aliOrder = AlipayOrder(partner: PARTNER, seller: SELLER, tradeNO: orderId, productName: subject, productDescription: body, amount: price, notifyURL: ALIPAY_NOTIFY_URL, service: "mobile.securitypay.pay", paymentType: "1", inputCharset: "utf-8", itBPay: "3d", showUrl: "m.alipay.com", rsaDate: nil, appID: nil) let orderSpec = aliOrder.description let signer = RSADataSigner(privateKey: RSA_PRIVATE) let signedString = signer?.sign(orderSpec) let orderString = "\(orderSpec)&sign=\"\(signedString!)\"&sign_type=\"RSA\"" AlipaySDK.defaultService().payOrder(orderString, fromScheme: "alipay-test", callback: nil) //alipay-test替换为自己设置的URL Types }
AppDelegate中添加回调状态监听
internal func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { //支付宝支付回调 if String(url.host!) == "safepay" { AlipaySDK.defaultService().processOrder(withPaymentResult: url,standbyCallback: { (value) in let code = value! let resultStatus = code["resultStatus"] as!String var content = "" switch resultStatus { case "9000": content = "支付成功" case "8000": content = "订单正在处理中" case "4000": content = "支付失败" case "5000": content = "重复请求" case "6001": content = "中途取消" case "6002": content = "网络连接出错" case "6004": content = "支付结果未知" default: content = "支付失败" break } print(content) }) } return true }