玩转iOS开发:集成 Union Pay - 银联支付

文章分享至:https://cainluo.github.io/14740149724404.htmlhtml


做者感言

前面已经把**WeChat SDK**的支付, AliPay SDK搞得七七八八了, 接下来就是银联支付的Union Pay SDK. 最后: 若是你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考大家的意见再进行修改, 联系我时, 请备注Union Pay SDK若是以为好的话, 但愿你们也能够打赏一下~嘻嘻~祝你们学习愉快~谢谢~git


简介

银联嘛, 用过银行卡的人都懂的, 咱们大天朝的产物, 主要是用来联合大天朝各个银行, 实现各个银行互通, 可跨行, 跨区, 跨境使用等等....其实换了一句话来讲, 就是中国版的**VISA, MasterCard, 虽然银联起步的比较晚, 但发展的脚步不比VISA**, **MasterCard**要差.github


准备工做

在这里, 我不得不吐槽一下, 若是是第一次集成银联的童鞋, 估计一开始还真是够呛的, 或许你连**SDK都找不到在哪里下载, 这网站还真的很难找, 因此我在这里贴出来给大家了, 方便各位童鞋们自行去查找下载商家技术服务** 这里还有怎么去查找SDK的示例, 你们也看看呗微信

1

2

3

4

5

这里我下载下来的是3.3.3版本, 54.8MB大小, 或许以后银联会继续更新SDK包, 这个的话, 你们看着办吧~~网络


废话来一段

惯例, 继续来一段废话, 打开咱们以前的集成**WeChat SDKAliPay SDk的工程, 新建一个工程叫作UnionPay-Objective-C**的新工程app

6


配置工程

配置工程的话, 首先咱们要引入**Union Pay SDK**的依赖包, 一共五个, 这或许是第三方支付品台里须要导入最少依赖的.布局

  • LocalAuthentication.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • CFNetwork.framework
  • libz.tbd

7

而后呢, 咱们须要去到**Info.plist**里, 添加三个属性学习

  • App Transport Security Settings
    • Allow Arbitrary Loads
  • Application requires iPhone environment
  • LSApplicationQueriesSchemes * uppaysdk * uppaywallet * uppayx1 * uppayx2 * uppayx3

8

接下来, 咱们要去添加**URL Schemes**了,测试

9

最后, 就是咱们要把**Union Pay SDK导进来了, 这样子就配置好整个工程了, 顺带说一声, 这个SDKpaymentcontrol**这个目录下~网站

10

差点别忘了把**-ObjC**这个宏加上, 否则无法跑

11


布局UI界面

惯例, 这里咱们也是只给一个**UIButton以及一个Action**事件.

12


补充多一个点

这里还须要补充一个点, 因为银联是采用**CC++以及Objective-C混编的, 因此这个有些蛋疼, 官方提供三种方式去适配, 我这里采用了最简单的一种, 直接把.m改为.mm**.

第一种

  • 因为支付控件使用到了**CC++Objective-C混编的状况,因此商户工程引入UPPaymentControl.h**头文件之后可能会出现连接错误,这个时候能够经过如下三种方式解决:

    • 将涉及到引用**UPPaymentControl.h的源文件的后缀名都改成.mm**;

    • 若是商户不想修改源文件的后缀名,能够在工程中添加一个空的继承自**NSObject的类,并将文件.m后缀名该改成.mm便可方法为New File** -> Objective-C class -> 类名自取 -> 保存 -> 修改后缀名为.mm

    • 将工程的**compile source as选项的值设置为Objective–C++**;

第二种

  • 因为在Demo工程中添加了自定义的库文件**libPaymentControl.a** ,当编译Demo工程时,应该检查工程设置**Search Paths里的Framework Search PathsHeader Search PathsLibrary Search Paths**的路径设置,看设置路径是否正确,另外还要注意里边是否多余一些不肯定的路径。

第三种

  • 将**Xcode工程中Build Setting** -> Apple LLVM compiler Language标签下的C++ Language DialectC++ Standard Library属性值修改成Compiler Default如实在没法解决,尝试添加-ObjC宏的地方修改成-force_load + 空格 + 控件路径,如:-force_load $(PROJECT_DIR)/ libPaymentControl.a,若是还报错,上下文应该会有**libPaymentControl.a文件找不到异常,好比ld: file not found: /Users/apple/Desktop/Communication 2/ libPaymentControl.a clang: error: linker command failed with exit code 1 (use -v to see invocation)** 请肯定**libPaymentControl.a**文件确实存在于此路径,可能为上下文路径配错。

实现银联支付

集成的时候, 这里咱们须要分为两个步骤, 一个是网络, 一个是本地操做.

本地部分

所谓的本地部分, 指的就是弹框, 灭框的一些操做, 还有发起网络一些点击事件等等.

13

网络部分

银联支付须要用到一个网络交互的流程, 这里的话, 咱们直接引用**Demo**里的代码, 而后再加以修改一丢丢, 就能够了~

14


测试支付

在测试支付这点上, 微信和银联都作的挺不错的, 惟独支付宝这个连个测试帐号都不提供, 真的是蛋疼...疼...疼, 打开银联接入指南, 里面就会有两个测试卡号.

测试帐号 测试信息
姓名 张三
手机号码 18100000000
证件类型 01身份证
证件号 510265790128303
招商银行卡 6226090000000048
密码 111101
验证码 123456(先点获取验证码以后再输入
测试帐号 测试信息
姓名 张三
手机号码 18100000000
证件类型 01身份证
CVN2 248
有效期 1219
证件号 510265790128303
华夏银行贷记卡 6226388000000095
密码 111101
验证码 123456(先点获取验证码以后再输入

最终效果

15


工程地址

项目地址: https://github.com/CainRun/PayProject


最后

码字很费脑, 看官赏点饭钱可好

微信

支付宝
相关文章
相关标签/搜索