(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文件中注册支付插件。添加以下内容
:name="com...演示。"
:=“@/jar”>
:name="com..."
:=“||”
:="">
:name="com.."
:=“||”
:=“”
:=“”>
还添加权限:
注意:编译版本时要选择API。以上建议
(6) 通话支付控制
1.支付接口调用
a) 引入类,例如:
com..;
b)支付控件可以通过以下方式调用:
// “00”——银联正式环境
// “01” – 银联测试环境,该环境下无真实交易发生
=“01”;
。 (, 空, 空, tn, );
支付完成后,获取支付控件的支付结果,并添加相应的处理逻辑。只需要在调用中实现()方法即可。支付成功后,将返回商户客户端支付结果的签名信息。
对于新增的签名信息,请注意以下几点:
1、前台返回的支付结果中包含银联签名,需在商户后台验证签名后才能显示结果。
2、前台签名使用的密钥和算法与后台签名结果一致。
3、如果商户APP在客户端进行签名验证,则必须自行实现更新签名密钥的机制,否则更改密钥后签名验证将失败。 (不推荐)
4、商户订单是否支付成功以商户后台各渠道返回的支付结果为准。这里支付控件返回的结果仅供参考。
示例代码如下:
无效(整数,
整数,
数据)
如果(数据==空){
str =数据.().("");
if( str.() ){
// 支付成功后,如果存在,取出来验证
// 结构体见c)参数说明
如果(数据。(“”)){
符号=data.().("");
// 验证证书,同时验证证书
// 这里商户需要发送给商户后台进行签名验证
如果((符号)){
//验证通过后,显示支付结果
(“支付成功!”);
} 别的 {
// 验证失败后的处理
// 建议通过商户后台查看支付结果
} 别的 {
// 没有收到签名信息
// 建议通过商户后台查看支付结果
}否则 if( str.() ){
(“支付失败!”);
}否则 if( str.() ){
(“您已取消此订单的付款!”);
c) 参数说明:
参数说明:
签名 - 签名后创建的数据
data – 用于签名的原始数据
data中原始数据结构:
——支付结果,失败,
tn——订单号
示例如下:
"{"sign":"//+1N++/xX/////+==","data":"=&tn="}"
2.检查是否已安装银联Apk接口调用
如果(。())
//当判断用户手机上已安装银联Apk时,商户客户端即可进行相应的个性化处理
(7) 商户旧版本SDK修改说明
对于原生SDK接入的商户,在原有修改的基础上更新相应文件后,需要添加如下修改:
1.添加//jar/xxx/.so
2. 添加到项目的.xml 文件中。添加以下内容:
:name="com.."
:=“|”
:=“”
:=""/>
3、调用接口改为4.2节中的支付接口,但仍保留原来的接口,如下图:
让我自我介绍一下。我2013年毕业于上海交通大学,曾在小公司和华为、OPPO等大公司工作过。我于2018年加入阿里巴巴,一直到现在。
我知道,大多数初级和中级工程师想要提高自己的技能,往往必须自己探索和成长,或者报名参加课程。但培训机构近万元的学费确实压力很大。没有系统的自学效果低效且冗长,很容易触碰天花板,技术停滞不前!
因此,我们收集整理了《2024年移动开发全套学习资料》。初衷也很简单。希望能够帮助到想要学习、提升自己却又不知道从哪里开始的朋友,同时也减轻大家的负担。
既有适合新手学习的基础教材,也有适合3年以上经验的朋友深入学习和提高的高级课程,基本涵盖了95%以上的开发知识点,真正系统化!
由于文件比较大,这里只是截取部分目录。每个节点包含各大厂商访谈、学习笔记、源码讲义、实战项目、讲解视频,并将持续更新!
如果您觉得本内容对您有帮助,可以扫码获取! ! (评论:)
终于
如果您读了这篇文章,觉得文章写得很好,请点个赞好吗?如果您觉得有什么值得改进的地方,请给我留言。我一定会仔细检查并改正任何不足之处。谢谢。
欢迎大家交流讨论~
《各大互联网公司面试真题解析、高级开发核心学习笔记、全套讲解视频、实际项目源码讲义》点击传送门即可获取!
246)]
[外部链接图片正在传输中...(img--47)]
[外部链接图片正在传输中...(img--47)]
[外部链接图片正在传输中...(img--47)]
既有适合新手学习的基础教材,也有适合3年以上经验的朋友深入学习和提高的高级课程。基本涵盖了95%以上的开发知识点,真正系统化!
由于文件比较大,这里只是截取部分目录。每个节点包含各大厂商访谈、学习笔记、源码讲义、实战项目、讲解视频,并将持续更新!
如果您觉得本内容对您有帮助,可以扫码获取! ! (评论:)
终于
如果您读了这篇文章,觉得文章写得很好,请点个赞好吗?如果您觉得有什么值得改进的地方,请给我留言。我会仔细检查并改正任何不足之处。谢谢。
[外部链接图片正在传输中...(img--47)]
欢迎大家交流讨论~
《各大互联网公司面试真题解析、高级开发核心学习笔记、全套讲解视频、实用项目源码讲义》点击传送门即可获取!