unionPay

来自于:官方立即使用

pay getSEPayinfo checkWalletInstalled

概述

unionPay封装了银联支付的SDK,使用此模块可在应用内接入银联支付。接入流程参考银联支付接入文档

unionPay - 图1

银联支付流程如下:

(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
(2)商户后台收到订单生成请求后,按照《手机控件支付产品接口规范》(文档见银联帮助中心->下载->开发包->手机控件支付参评技术开发包)组织并推送订单信息至银联后台;
(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复交易流水号至商户后台(应答要素:交易流水号等);
(4)商户后台接收到交易流水号,将交易流水号返回给客户端;
(5)客户端通过交易流水号(TN)调用支付控件;
(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
(7)支付成功后,银联后台将支付结果通知给商户后台;
(8)银联将支付结果通知支付控件;
(9)支付控件显示支付结果并将支付结果返回给客户端;

注: 本模块实现了上述流程的(5)—-(9)步骤

配置 config.xml 文件:

使用此模块前需先配置 config.xml文件,方法如下:

  1. - 名称:unionPay
  2. - 参数:urlScheme
  3. - 配置示例:
  4. ```js
  5. <feature name="unionPay">
  6. <param name="urlScheme" value="unionPayA000000011" />
  7. </feature>
  • 字段描述:

    urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动银联支付控件,也可以从银联支付控件跳回本应用(此时需要云编译或自定义loader才能测试本功能)。urlScheme 的 value 值由字符串 ‘unionPay’ 和本应用的 widgetId 拼接而成,如:unionPayA000000011 ```

【ios平台使用模块的配置】

1,配置 plist 文件

在 iOS 9 下直接进行 HTTP 请求时会收到错误提示。不能直接使用 HTTP 进行请求,需要在 Info.plist 新增一段用于控制 ATS 的配置:

  1. <key>NSAppTransportSecurity</key> <dict>
  2. <key>NSAllowsArbitraryLoads</key> <true/>
  3. </dict>

2, iOS 平台上必须添加白名单,如下:

  1. <preference name="querySchemes" value="uppaysdk,uppaywallet,uppayx1,uppayx2,uppayx3" />

详情参考 APICloud 官方文档之——-白名单配置

测试账号

以下是测试用卡号、手机号等信息(此类信息仅供测试使用,不会发生真实交易) 招商银行借记卡:6226090000000048 手机号:18100000000 密码:111101 短信验证码:123456(先点获取验证码之后再输入) 证件类型:01身份证 证件号:510265790128303 姓名:张三 华夏银行贷记卡:6226388000000095 手机号:18100000000 CVN2:248 有效期:1219 短信验证码:123456(先点获取验证码之后再输入) 证件类型:01身份证 证件号:510265790128303 姓名:张三

pay

按交易流水号支付订单

pay({params}, callback(ret, err))

params

tn:

  • 类型:字符串
  • 描述:交易流水号信息,银联后台生成,通过商户后台返回到客户端

devMode:

  • 类型:布尔
  • 描述:接入模式设定,值为 false 代表接入生成环境
  • 默认值:true

seType:

  • 类型:字符串类型
  • 描述:(可选项)手机pay支付类别(仅android支持)
  • 默认:普通银联支付

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. result: "success" //字符串类型;支付结果信息
  3. //取值范围:
  4. //success(支付成功)
  5. //fail(支付失败)
  6. //cancel(用户取消支付)
  7. }

示例代码

  1. var unPay = api.require('unionPay');
  2. api.ajax({
  3. url: 'http://101.231.204.84:8091/sim/getacptn',//从银联测试服务器上获取tn号
  4. method: 'post',
  5. dataType: 'text',
  6. returnAll:false,
  7. },function(ret,err){
  8. if (ret) {
  9. unPay.pay({
  10. tn: ret,
  11. devMode: true
  12. }, function(ret, err){
  13. api.alert({msg:JSON.stringify(ret)});
  14. });
  15. }
  16. });

可用性

iOS系统 Android系统

可提供的1.0.0及更高版本

getSEPayinfo

获取手机pay支持情况

getSEPayinfo({params}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:, //布尔类型;可正常支持手机支付
  3. seName:'', //字符串类型;手机pay名称,
  4. seType:'', //字符串类型;手机pay名称对应类别,与SEName对应关系 seType/seName,‘02’/‘Samsung Pay’、‘04’/‘Huawei Pay’、‘27’/‘Meizu Pay’、‘30’/‘Le Pay’、‘25’/‘Mi Pay’、‘29’/‘Oppo Pay’、‘33’/‘vivo Pay’、‘32’/‘Smartisan Pay’
  5. cardNumbers:, //数字类型;卡数量
  6. }

err:

  • 类型:JSON 对象
  • 描述:ret.status 为false时返回
  • 内部字段:
  1. {
  2. SEName:'', //字符串类型;手机pay名称,
  3. seType:'', //字符串类型;手机pay名称对应类别
  4. errorCode:‘’, //字符串类型;错误码;‘01’/手机pay未安装或TSM控件版本低,‘02’/未开通手机支付,‘04’/检测未安装TSM控件,‘10’/接口超时
  5. }

示例代码

  1. var unPay = api.require('unionPay');
  2. unPay.getSEPayinfo({
  3. }, function(ret, err){
  4. api.alert({msg:JSON.stringify(ret)});
  5. });
  6. );

可用性

Android系统

可提供的1.0.0及更高版本

checkWalletInstalled

检测是否安装云闪付客户端

checkWalletInstalled({params}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status:, //布尔类型;是否安装了闪付客户端
  3. }

示例代码

  1. var unPay = api.require('unionPay');
  2. unPay. checkWalletInstalled({
  3. }, function(ret, err){
  4. alert({msg:JSON.stringify(ret)});
  5. });
  6. );

可用性

Android系统

可提供的1.0.0及更高版本