iOS银联支付

今天开始做银联支付啦,从头开始记录一下。


1、下载sdk

下载地址:https://open.unionpay.com/ajweb/help/file(不好找啊)


iOS银联支付_第1张图片


iOS银联支付_第2张图片

下载后是.rar的压缩文件,自己找个工具解压就行了,将paymentcontrol/inc目录下UPPaymentControl.h文件和paymentcontrol/libs目录下的libPaymentControl.a文件添加到商户应用的工程中


2、工程配置

1)添加依赖库CFNetwork.framework、SystemConfiguration.framework 、libz、libPaymentControl.a到工程中.

2)在工程info.plist设置中添加一个URL Types回调协议(在UPPayDemo工程中使用“UPPayDemo”作为协议),用于在支付完成后返回商户客户端。

iOS银联支付_第3张图片
URL Schemes 后面可以写自己项目的名称

3)http请求设置,在Xcode7.0之后的版本中进行http请求时,需要在工程对应的plist文件中添加NSAppTransportSecurity Dictionary 并同时设置里面NSAllowsArbitraryLoads 属性值为 YES

4、添加协议白名单

iOS银联支付_第4张图片

5)加-ObjC宏,选择工程targets——》build settings ->Linking->other linker flags

6)调用插件:

在需要调用支付控件接口的代码文件内引用头文件UPPaymentControl.h。

(注意:如果工程的compile source as 选项的值不是Objective–C++,则引用此头文件的文件类型都要改为.mm)

商户App从商户服务器获取tn(注:先通过调用后台接口获取订单信息)

* @param tn 订单信息

* @param schemeStr 调用支付的app注册在info.plist中的scheme

* @param mode 支付环境"00"代表接入生产环境(正式版本需要);"01"代表接入开发测试环境

* @param viewController 启动支付控件的viewController

* @return 返回成功失败

iOS银联支付_第5张图片
fromScheme后面可以写自己项目的名称

7)返回结果接口调用

支付控件结果处理函数handlePaymentResult: completeBlock:需要在工程AppDelegate文件的application: openURL: sourceApplication: annotation: 方法中进行调用。

支付控件结果处理函数handlePaymentResult: completeBlock:包含两个参数,参数1url为支付结果串,由handlePaymentResult: completeBlock:方法解析url内容;参数2completionBlock为商户APP定义的结果处理方法,包含两个传入参数code和data,其中code表示支付结果,取值为suceess,fail,cancel分别表示支付成功、支付失败和支付取消,data表示结果签名数据,商户使用银联公钥验证结果真实性。

completeBlock中的NSDictionary *data结构如下:

sign —— 签名后做Base64的数据

data —— 用于签名的原始数据,结构如下:

pay_result —— 支付结果success,fail,cancel

tn —— 订单号

iOS银联支付_第6张图片

3、常见问题可以参考这篇文章blog.csdn.net/lxlzy/article/details/53338278,我是根据这篇文章的步骤来的,后续还会根据我的情况补进去一些内容

我的支付做好啦,转载清注明出处

你可能感兴趣的:(iOS银联支付)