iOS Apple Pay开发流程

简介: 项目中要用到支付功能,需要支付宝支付、支付宝网页支付转客户端、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下Apple_pay,其他支付也写了对应教程,并且给出了连接。

一:介绍

项目中要用到支付功能,需要支付宝支付、支付宝网页支付转客户端、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。
今天我们就主要介绍一下Apple_pay,其他支付也写了对应教程,并且给出了连接。

二:支付流程介绍

2.1 Apple Pay 页面演示

Apple Pay 页面演示

  1. 买家在手机应用中购买商品或服务,在订单页面中展示 Apple Pay 按钮
  2. 通过银联控件,掉起 Apple Pay 支付页面
  3. 用户通过支付页面验证 Touch ID,输入银行卡密码 是否需要输入银行卡密码取决于交易限额和银行支持情况
  4. 支付成功,商户应用内展示成功页面

(1)支付成功页面应参照 UI 示例,展示“银联”标识,“云闪付”标识。
(2)银联 SDK 控件支持折扣功能。在折扣活动期间,商户应用内应参照实例 UI 进行原金 额、折扣金额的展示

2.2 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设置

bundleID设置

Capability中启用Apple Pay权限,并选择merchantID,merchantID申请流程

启用Apple Pay权限

之后项目会多一个Applepay的配置文件ApplePayYasin.entitlements

项目文件

四:下载Apple Pay SDK

Apple Pay SDK

下载之后,找到.h文件和库文件,使用UPPaymentControl需要将paymentcontrol/inc目录下UPAPayPlugin.h、UPAPayPluginDelegate.h文件和paymentcontrol/libs目录下的libUPAPayPlugin.a文件添加到商户应用的工程中

SDK路径

五:调用支付接口

在调用银联支付类里面,首先增加头文件引用。

#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(@"支付过程中用户取消了,请查询后台确认订单");
        
    }
}

支付调起截图

希望可以帮助大家

如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议

如需转载请联系我,经过授权方可转载,谢谢

目录
相关文章
|
4月前
|
人工智能 自然语言处理 云计算
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
|
6月前
|
人工智能 数据安全/隐私保护 iOS开发
苹果在WWDC24上宣布的所有内容:Apple Intelligence、集成ChatGPT的Siri、iOS 18
苹果在WWDC24上宣布的所有内容:Apple Intelligence、集成ChatGPT的Siri、iOS 18
|
安全 Go 数据安全/隐私保护
免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较
免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较
720 0
|
程序员 iOS开发
iOS开发:真机调试提示XXX, but code signing identity Apple Development问题
最近从网上下载一个demo,然后想要运行真机,运行不成功,提示提示XXX is automatically signed, but code signing identity Apple Development的问题,然后通过排查报错原因找到了报错原因,那么本篇博文就来分享一下具体的解决原因。
236 0
iOS开发:真机调试提示XXX, but code signing identity Apple Development问题
|
数据安全/隐私保护 Android开发 iOS开发
免费苹果账号(apple id)申请ios证书p12真机调试
免费苹果账号(apple id)申请ios证书p12真机调试
|
安全 API 开发工具
iOS 微信支付开发流程
项目中要用到支付功能,需要支付宝支付、支付宝网页支付转客户端、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下微信支付,其他支付也写了对应教程,并且给出了连接。
111 0
|
开发工具 数据安全/隐私保护 iOS开发
iOS 银联支付开发流程
项目中要用到支付功能,需要支付宝支付、支付宝网页支付转客户端、微信支付、银联支付、Apple_pay,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要介绍一下银联控件支付,其他支付也写了对应教程,并且给出了连接。
220 0
iOS 银联支付开发流程
|
iOS开发 Perl
flutter和iOS原生混合开发流程
熟悉flutter开发的人都知道,flutter和移动端原生混合开发的方式有两种: 一种是以flutter项目为主,使用plugin插件的方式将原生部分集成到flutter项目中; 另一种则是把flutter部分作为一个模块嵌入到原生的项目中。 作为一名iOSer,今天来介绍一下flutter和iOS原生项目混合开发的流程。
flutter和iOS原生混合开发流程
|
存储 Web App开发 移动开发
20个可以帮你简化iOS app开发流程的工具
这里推荐20个可以帮你简化iOS app开发流程的工具。很多开发者都使用过这些工具,涉及原型和设计、编程、测试以及最后的营销,基本上涵盖了整个开发过程。
356 0
20个可以帮你简化iOS app开发流程的工具
|
iOS开发
Swift学习第十三枪-使用Swift开发IOS中蓝牙4.0的开发流程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
1063 0