项目中要用到支付功能,需要支付宝支付、支付宝网页支付转客户端、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下 Apple_pay,其他支付也写了对应教程,并且给出了连接。
1-2. 商户生成订单,通过商户 SERVER 端将订单信息发送给银联支付网关; 3-4. 银联支付网关记录订单信息,返回用来标识订单的 TN 号,经由商户 SERVER 返回至给 商户 APP; 5. 商户 APP 调用银联 SDK,将 TN 号传递给银联 SDK 6. 银联 SDK 向 Apple 公司的 PASSKIT FRAMEWORK 发起支付请求; 7. 接口返回加密的支付 Token 信息; 8-9. 银联 SDK 将支付 Token 传递给银联支付网关,完成交易认证; 10-12. 银联将支付结果返回给商户 APP,商户 SERVER,商户 APP 负责提示用户交易结果。
bundleID 设置
Capability 中启用 Apple Pay 权限,并选择 merchantID, merchantID 申请流程 。
之后项目会多一个 Applepay 的配置文件 ApplePayYasin.entitlements
下载之后,找到. h 文件和库文件,使用 UPPaymentControl 需要将 paymentcontrol/inc 目录下 UPAPayPlugin.h、UPAPayPluginDelegate.h 文件和 paymentcontrol/libs 目录下的 libUPAPayPlugin.a 文件添加到商户应用的工程中
在调用银联支付类里面,首先增加头文件引用。
- #import "UPAPayPlugin.h"
- // TODO 商户需要换用自己的mertchantID
- #define kAppleMerchantID@"merchant.com.AgreePay.ApplePayAgree"
在调起支付的方法中代码如下:
- //当获得的tn不为空时,调用支付接口
- if (tn != nil && tn.length > 0) {
- [UPAPayPlugin startPay:tn
- mode:@"01"
- viewController:ViewController
- delegate:self andAPMechantID:kAppleMerchantID];
- }
方法需要的几个参数文档上都写的有,tn 是交易流水号,服务器端传回来的,客户端只有凭借这个参数才能调用支付控件 进行支付的。只需要调用一个方法就行啦!!!
就在调起支付的 ViewController 中写入下面代码即可
- #pragma mark -
- #pragma mark 响应控件返回的支付结果
- #pragma mark -
- - (void)UPAPayPluginResult:(UPPayResult *)result
- {
- if(result.paymentResultStatus == UPPaymentResultStatusSuccess) {
- NSString *otherInfo = result.otherInfo?result.otherInfo:@"";
- NSString *successInfo = [NSString stringWithFormat:@"支付成功\n%@",otherInfo];
- NSLog(@"%@",successInfo);
- }else if(result.paymentResultStatus == UPPaymentResultStatusCancel){
- NSLog(@"支付取消");
- }else if (result.paymentResultStatus == UPPaymentResultStatusFailure) {
- NSString *errorInfo = [NSString stringWithFormat:@"%@",result.errorDescription];
- NSLog(@"支付失败%@",errorInfo);
- }else if (result.paymentResultStatus == UPPaymentResultStatusUnknownCancel) {
- //TODO UPPAymentResultStatusUnknowCancel表示发起支付以后用户取消,导致支付状态不确认,需要查询商户后台确认真实的支付结果
- // NSString *errorInfo = [NSString stringWithFormat:@"支付过程中用户取消了,请查询后台确认订单"];
- // [self showAlertMessage:errorInfo];
- NSLog(@"支付过程中用户取消了,请查询后台确认订单");
- }
- }
希望可以帮助大家 如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
来源: https://juejin.im/post/5a406d816fb9a04503105020