作者感言

前面已经把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. jquery之hide()用法详解

    注:  以下函数用法和hide()类似  [参数类型完全一样] toggle() hide() show() slideToggle() slideUp() slideDown() fadeToggl ...

  2. 1:wamp如何更改网站根目录DocumentRoot 2:php的error_log文件(txt)会每秒几十K增大

    wamp如何更改网站根目录DocumentRoot     想必很多人都使用wamp来开发php的web应用吧,同时某些情况下我们或许需要修改服务器的根目录来方便我们搭建和开发网站,接下里我们将说明如 ...

  3. Java_JDK_TreeMap

    (一)TreeMap TreeMap使用的是红黑树来实现的,所以重点是红黑树的插入和删除. 红黑树的3个特性: 根节点和所有外部节点的颜色都是黑色的: 从根节点到外部节点的途中没有连续两个节点的颜色是 ...

  4. 头文件为什么要加#ifndef #define #endif

    #ifndef 在头文件中的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时 ,就会出现大量“重定义”的错误.在头文件中实用#ifndef #de ...

  5. [Java解惑]异常

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. luabind 导出string问题

    luabind导出字符串 不能导出char* 会有问题 应该是字符串连接的时候出错了 static _TCHAR* pRetChar = new _TCHAR[10]; memcpy(pRetChar ...

  7. jQuery的deferred对象

    应用场景:处理异步任务 看到一篇阮一峰老师的博客挺好的讲的就是jQuery的deferred对象.坦诚讲之前没有怎么用过这个东东呢. 摘其中几点记录下 (1) $.Deferred() 生成一个def ...

  8. iOS - ImageCache 网络图片缓存

    1.ImageCache 使用内存缓存方式: 使用沙盒缓存方式: 使用网络图片第三方库方式: SDWebImage: iOS 中著名的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.g ...

  9. nodejs学习笔记<二>简单的node服务器

    在环境搭建好后,就可以开始动手架设(node驱动)一个简单的web服务器. 首先,nodejs还是用js编写.先来看一段node官网上的实例代码. var http = require('http') ...

  10. Android Menu菜单使用

    如上图右上角,菜单选项的编辑,第一种代码实现方式如下: package com.example.menu; import android.os.Bundle; import android.app.A ...