移动支付-支付宝支付
移动支付-微信支付
移动支付-银联支付
移动支付-支付
银联支付
1 概述
银联支付方式有多种。 我们这里主要讲的是移动控制支付。
银联移动支付控件主要应用于各类移动电商平台的支付应用。 在合作商户的移动客户端(或网站)集成(或调用)银联支付控件后,持卡人可以在合作商户使用银联移动支付安全控件进行安全、便捷的即时支付,同时保证信用卡的安全。用户银行卡信息。
2. 付款流程
流程图说明:
(1)用户在客户端点击购买商品,客户端向商户后台发起订单生成请求;
(2)商户后台收到订单生成请求后,按照《手机控制器支付产品接口规范》整理订单信息并推送至银联后台;
(3)银联后端收到订单信息并核对后,生成对应的交易序列号(即TN),并将交易序列号回复给商户后台(响应元素:交易序列号等);
(4)商户后台接收交易序列号,并将交易序列号返回给客户端;
(5)客户端通过交易序列号(TN)调用支付控制;
(6)用户在支付控件中输入相关支付信息后,支付控件向银联后端发起支付请求;
(7)支付成功后,银联后台将支付结果通知商户后台;
(8)银联将支付结果通知支付控制;
(9)支付控件显示支付结果并将支付结果返回给客户端;
注:本文档主要关注上述流程中第(5)、(9)部分的实现。
目前各平台支持的设备如下:
平台SDK主要适用于2.3及以上版本的终端设备;
3. 测试账户
提供测试卡号和手机号码信息(此信息仅用于测试,不会发生正式交易)
招商银行借记卡:
电话号码:
密码:
短信验证码:(先点击获取验证码再输入)
文件类型:01身份证
证书编号:5303
姓名:张三
华夏银行信用卡:
电话号码:
简历2:248
有效期:1219
短信验证码:(先点击获取验证码再输入)
文件类型:01身份证
证书编号:5303
姓名:张三
4. SDK接入说明及部分文档
技术支持及业务说明
手机控制支付SDK下载demo及相关接入文档等jar包
由于下载的银联手机控件支付开发包中的demo工程还没有配置和使用,所以下载的控件使用指南文档中也有一些说明,这里也列出来。 现在我改了一下来完成这个demo,如下:
4.1 SDK包说明
商户开发者获得银联提供的开发包后,应检查SDK文件所在目录/。 以下各节提到的文件都在该目录中:
apk目录包含支付控件的apk:.apk
jar目录包含商户集成所需的jar包、so文件(支持arm、x86、-v8a平台)以及资源文件。
.jar定义了调用支付控件所需的接口。
4.2 接口说明
1. 支付接口
启动支付控制的接口定义在/.jar中。 接口定义如下:
int ( , spId , , , 模式)
参数说明:
——用于启动支付控制的对象
spId - 保留使用,此处输入 null
——保留使用,此处填null
——订单信息为交易流水号,即TN,由商户后台从银联后台获取。
mode ——银联后端环境标识,“00”在银联官方环境发起交易,“01”在银联测试环境发起交易
返回值:
。 ——终端已安装控件并启动控件
。 — 移动端未安装支付控件。 您需要先安装支付控件。
2.检查是否安装了银联Apk接口
/.jar中定义了检测是否安装银联apk的接口。 接口定义如下:
( )
参数说明:
——启动支付控制的环境
返回值:
true - 终端已安装控制apk
— 该终端上未安装控制 apk
4.3 添加SDK包
(1) 可以新建一个工程来编写demo,也可以使用导入的demo
生成的项目
(2)在appàsrcàmain中新建文件夹,将//jar/data.bin复制到项目的/目录下;
(3)在主目录下新建一个,然后将//jar/xxx/.so和//jar/xxx/.so复制到项目的libs/xxx/目录下,其中xxx为-v7a,, -v8a、x86、一。
-v8a() 是针对 (x86 64) 架构优化的库文件。 引入该项目后,性能会在(x86 64)模型上有所提升,但最终生成的包会变大。 注意:如果项目中使用了其他.so库,则所有.so库都需要具有-v8a()版本。
(4)在app目录下新建libs,将//.jar复制到项目的libs/目录下;
将//jar/.jar复制到项目的libs/目录下,然后依赖该jar包;
效果如下:
(5) 在项目的.xml文件中注册支付插件。添加以下内容
还添加权限:
注意:编译版本时要选择API。 以上建议
(6) 通话支付控制
1.支付接口调用
a) 引入类,例如:
com..;
b)支付控件可以通过以下方式调用:
// “00”——银联正式环境
// “01” – 银联测试环境,该环境下没有发生真实交易
=“01”;
。 (, 空, 空, tn, );
支付完成后,获取支付控件的支付结果并添加相应的处理逻辑。 只需要在调用中实现()方法即可。 支付成功后,将返回商户客户端支付结果的签名信息。
对于新增的签名信息,请注意以下几点:
1、前台返回的支付结果中包含银联签名,需在商户后台验证签名后才能显示结果。
2、前台签名使用的密钥和算法与后台签名结果一致。
3、如果商户APP在客户端进行签名验证,则必须自行实现更新签名密钥的机制,否则更改密钥后签名验证将失败。 (不建议)
4、商户订单是否支付成功以商户后台各渠道返回的支付结果为准。 这里支付控件返回的结果仅供参考。
示例代码如下:
无效(整数,
整数,
数据)
如果(数据==空){
;
str = 数据.().("");
if( str.() ){
// 支付成功后,如果存在,取出进行验证
//结构体参见c)参数说明
如果(数据。(“”)){
符号=数据.().("");
//验证签证证书,同时验证签证证书
// 这里商户需要发送给商户后台进行签名验证
如果((符号)){
//验证通过后,显示支付结果
(“ 支付成功! ”);
} 别的 {
// 验证失败后的处理
// 建议通过商户后台查看支付结果
} 别的 {
// 没有收到签名信息
// 建议通过商户后台查看支付结果
}否则 if( str.() ){
(“支付失败!”);
}否则 if( str.() ){
(“您已取消此订单的付款!”);
c) 参数说明:
参数说明:
签名 - 签名后创建的数据
data – 用于签名的原始数据
data中原始数据结构:
——支付结果,失败,
tn——订单号
示例如下:
"{"sign":"ZnZY4nqFGu/ugcXNIhniJh6UDVriWANlHtIDRzV9w120E6tUgpL9Z7jIFzWrSV73hmrkk8BZMXMc/9b8u3Ex1ugnZn0OZtWfMZk2I979dxp2MmOB+1N+Zxf8iHr7KNhf9xb+VZdEydn3Wc/xX/B4jncg0AwDJO/0pezhSZqdhSivTEoxq7KQTq2KaHJmNotPzBatWI5Ta7Ka2l/fKUv8zr6DGu3/5UaPqHhnUq1IwgxEWOYxGWQgtyTMo/tDIRx0OlXOm4iOEcnA9DWGT5hXTT3nONkRFuOSyqS5Rzc26gQE6boD+wkdUZTy55ns8cDCdaPajMrnuEByZCs70yvSgA==","data":"pay_result=success&tn=201512151321481233778"}"
2.检查是否已安装银联Apk接口调用
如果(。())
//当判断用户手机上已安装银联Apk时,商户客户端即可进行相应的个性化处理
(7) 商户旧版本SDK修改说明
对于原有SDK接入的商户,在原有修改的基础上更新相应文件后,需要添加如下修改:
1.添加//jar/xxx/.so
2. 添加到项目的.xml 文件中。 添加以下内容:
3、调用接口改为4.2节中的支付接口,但仍保留原来的接口,如下图:
int ( , , spId , , , 模式)
参数说明:
——用于启动支付控制的对象
——支付插件代表的类,填写“.”即可。
spId - 保留使用,此处输入 null
——保留使用918项目网,此处填null
——订单信息为交易流水号,即TN,由商户后台从银联后台获取。
mode ——银联后端环境标识,“00”在银联官方环境发起交易,“01”在银联测试环境发起交易
5、常见问题汇总