具体的接入方法不说了,看支付宝开发文档吧,我这里要说的是接入成功后如何去调用支付方法以及需要注意的一些事项。
首先,支付宝的SDK代码是oc的,所以Swift项目接入后,需要建立一个桥接文件,引入支付宝的头文件,如图:
支付宝支付分两种情况:
1、用户手机安装了支付宝客户端,调用支付宝时,直接跳转客户端通过钱包支付,回调结果是执行Appdelegate文件里的 funcapplication(_app:UIApplication, open url:URL, options: [UIApplicationOpenURLOptionsKey:Any]) ->Bool 方法的,代码逻辑如下:
if url.host=="safepay"{
//跳转支付宝钱包客户端进行支付,处理支付结果
AlipaySDK.defaultService().processOrder(withPaymentResult: url, standbyCallback: { (resultDic)in
//此处的回调结果resultDic一般不直接用,需要调用本地服务区的验证接口去验证支付结果,如需集中处理支付结果,可用通知或闭包将此回调结果传出去
})
2、如果用户没有安装支付宝客户端,调起支付宝支付时会启动web网页版本,网页版的支付回调,此方法也是直接点击支付宝支付按钮时触发的方法,只不过回调结果只走网页版的,客户端的自动从Appdelegate那个方法里执行
AlipaySDK.defaultService().payOrder(orderString, fromScheme:AppScheme, callback: { resultDic in
//此方法的orderString参数是调用本地服务器的支付接口返回的,不要自己调用支付宝的接口去获取或自己拼接,此部分工作交给本地服务器去完成
//AppScheme是自己app的返回标识,大白话就是跳转到支付宝客户端后得通过这个标识找到自己的客户端再返回来,这个一般自己生成一个就行,并与Target-info-URL Types里的URL Schemes对应起来,如图:
//此处的回调结果也需经过本地后台验证,不可直接读取,可在此处调用本地验证支付结果的接口
}
集成之后,自己可以用有客户端和无客户端的两种情况进行测试,打断点,看看哪些回调方法对应那种情况,自己多试几次就明白了
好了,支付宝支付代码大概也就这么多,很多地方需要跟你们后台好好沟通协作,文章如有缺漏,欢迎补充,如果不严谨的地方,欢迎指出,集成过程中也会有很多坑,请注意!