作者感言

前面已经把WeChat SDK的支付, AliPay SDK搞得七七八八了, 接下来就是银联支付的Union Pay SDK.

最后:
如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考你们的意见再进行修改, 联系我时, 请备注Union Pay SDK如果觉得好的话, 希望大家也可以打赏一下~嘻嘻~祝大家学习愉快~谢谢~


简介

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


准备工作

在这里, 我不得不吐槽一下, 如果是第一次集成银联的童鞋, 估计一开始还真是够呛的, 或许你连SDK都找不到在哪里下载, 这网站还真的很难找, 所以我在这里贴出来给你们了, 方便各位童鞋们自行去查找下载商家技术服务

这里还有怎么去查找SDK的示例, 大家也看看呗

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


废话来一段

惯例, 继续来一段废话, 打开我们之前的集成WeChat SDKAliPay SDk的工程, 新建一个工程叫做UnionPay-Objective-C的新工程


配置工程

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

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

然后呢, 我们需要去到Info.plist里, 添加三个属性

  • App Transport Security Settings

    • Allow Arbitrary Loads
  • Application requires iPhone environment
  • LSApplicationQueriesSchemes
    • uppaysdk
    • uppaywallet
    • uppayx1
    • uppayx2
    • uppayx3

接下来, 我们要去添加URL Schemes了,

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

差点别忘了把-ObjC这个宏加上, 不然没法跑


布局UI界面

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


补充多一个点

这里还需要补充一个点, 由于银联是采用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文件确实存在于此路径,可能为上下文路径配错。

实现银联支付

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

本地部分

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

网络部分

银联支付需要用到一个网络交互的流程, 这里的话, 我们直接引用Demo里的代码, 然后再加以修改一丢丢, 就可以了~


测试支付

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

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

最终效果


工程地址

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

集成 Union Pay - 银联支付的更多相关文章

  1. 集成 Union Pay - 银联支付--ios

    请看这个网址,谢谢谢 http://www.cnblogs.com/oc-bowen/p/6000389.html

  2. iOS支付宝,微信,银联支付集成封装调用(下)

    一.越来越多的app增加第三方的功能,可能app有不同的页面但调用相同的支付方式,例如界面如下: 这两个页面都会使用第三方支付支付:(微信,支付宝,银联)如果在每一个页面都直接调用第三方支付的接口全部 ...

  3. iOS支付宝,微信,银联支付集成封装(上)

    一.集成支付宝支付 支付宝集成官方教程https://docs.open.alipay.com/204/105295/ 支付宝集成官方demo https://docs.open.alipay.com ...

  4. iOS----支付(微信支付、支付宝支付、银联支付控件集成支付)(转)

    资料 支付宝 //文档idk都包含了安卓.iOS版 银 联 银联官网资料 Demo Demo给了一个订单号,做测试使用,若出现支付失败什么的,可能是已经被别人给支付了,或者是服务器订单过期了 ~ 一. ...

  5. 李洪强iOS开发支付集成之银联支付

    iOS开发支付集成之银联支付 银联官网在这里,这里能下载SDK或者是看文档.最新的版本写的简单了很多,看文档一直做下去基本上就没问题了. 首先,SDK在这里下载,里面包含需要的库文件和详细的文档. 银 ...

  6. iOS开发 支付之银联支付集成

    iOS开发之银联支付集成 最近在做支付这一块的东西,就记录下来以便以后参考和各位交流学习,这里是银联支付 银联官网在这里,这里能下载SDK或者是看文档.文档嘛,对银联来说,还是不要看的太仔细的好,以前 ...

  7. Android集成银联支付,提示java.lang.UnsatisfieldLinkError错误

    尽管解决方法很简单,但还是记录一下吧. 最近做银联支付(Android),官方给的demo是eclipse的.按照官方(https://open.unionpay.com/ajweb/product) ...

  8. iOS 集成银联支付(绕过文档的坑,快速集成)-转

    本文是投稿文章,作者:南栀倾寒当初集成支付宝的时候,觉得见了这么丑的代码,加上这么难找的下载地址,在配上几乎为零的文档,寒哥就要吐血了. 下午去集成银联,才知道血吐的早了. 下载地址:https:// ...

  9. iOS 集成银联支付

    下载地址:https://open.unionpay.com/upload/download/Development_kit85427986.rar 其实我找了半个小时 也不知道怎么就下载好了 这个我 ...

随机推荐

  1. L0/L1/L2范数的联系与区别

    L0/L1/L2范数的联系与区别 标签(空格分隔): 机器学习 最近快被各大公司的笔试题淹没了,其中有一道题是从贝叶斯先验,优化等各个方面比较L0.L1.L2范数的联系与区别. L0范数 L0范数表示 ...

  2. 协方差Covariance的表述推导

    今天想了一下关于概率论的一维数据期望.方差以及高维数据的矩阵表示,突然想到为什么在一维中 方差的表示为:V(x) = E((x-E(x))2) 而到了高维,这样的表述就成了协方差呢?V(X) = E( ...

  3. QUEEN_BLADE_2D-非常屌-113P

    http://www.cgvoo.com/thread-33670-1-2.html http://blog.sina.com.cn/s/blog_4b92d6070102e7gj.html http ...

  4. 【VB6笔记-01】 读取Excel绑定到DataGrid

    Private Sub cmdOpen_Click() CommonDialog1.Filter = "Excel???t(*.xlsx)|*.xlsx" CommonDialog ...

  5. 简单几步配置gitlab

    简单几步配置gitlab 之前配置gitlab需要很多步骤,要装apache2.ruby.tomcat.mysql等一片东西.有没有更简单的方式呢?现在可以借助bitnami,简化了很多. 可以参考v ...

  6. Android 自定义对话框

    Android实现自定义对话框效果: 核心代码: package com.example.diydialog; import android.os.Bundle; import android.app ...

  7. VNC的安装与配置

    一,安装tigervnc-server VNC软件包 [root@localhost ~]# yum install tigervnc-server 设置开机自启动 [root@localhost ~ ...

  8. python一个注意的地方

    https://www.zhihu.com/question/25874136 class test: l=[] def init(self): self.l=['1','2','7'] a1=tes ...

  9. python中的实例方法、静态方法、类方法、类变量和实例变量

    class MyTest: myname = 'peter' # add a instance attribute    def __init__(self, name):        self.n ...

  10. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...