- 现在不少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 : 调用支付宝的客户端,有结果时回调