银联商务全民付移动支付APP综合支付控件,主要为合作商户的手机客户端提供安全、便捷的支付服务。合作商户的手机客户端通过集成全民付移动支付APP综合支付控件安全快速的唤起钱包 APP(云闪付、微信、支付宝等)完成支付。
全民付移动支付APP支付是由银联商务整合全民付(银商钱包)、云闪付、安卓PAY、微信、支付宝等多种钱包推出的手机支付产品,用户在银联商务签约的商户APP上进行付款时,可选择这些钱包进行支付。详情参考 银联商务官方文档
本原生插件封装了银联商务全民付移动支付APP综合支付控件的SDK,包括微信、支付宝、全民付(银商钱包)、云闪付、安卓PAY支付这五种支付方式。
注意:
<feature name="aUnifyPay">
<param name="urlScheme" value="wxd0d84bbf23b4a0e4"/>
<param name="urlScheme" value="unifyPayBackUrl"/>
<param name="urlScheme" value="aliMiniPay123"/>
<param name="appId" value="wxd0d84bbf23b4a0e4"/>
<param name="universalLink" value="https://developer.yonyou.com"/>
</feature>
字段描述:
urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动目标客户端(如微信),目标客户端依靠本参数跳回本应用。urlScheme 的 value 值是从目标 App 的开放平台获取的 appid,如 微信的 appid 申请方法参考 微信开放平台接入文档。也可以是自定义的,如云闪付 unifyPayBackUrl(必须是以unifyPay开头的字符串,如unifyPay20190723、unifyPayBackUrl、unifyPayDemo)。支付宝小程序支付必须以aliMiniPay开头的支持同时配置多个 urlScheme,若未开通相应的支付功能可不配置。
appId:(必须配置)商户注册的微信支付appId。appid 申请方法参考微信开放平台接入文档。
universalLink:(必须配置) 微信开发者Universal Link。
config 配置注意事项:
在 iOS 平台需配置 白名单。需配置 weixin、weixinULAPI、alipays、uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3 。示例如下:
//多个值之间用英文逗号隔开
<preference name="querySchemes" value="weixin,weixinULAPI,alipays,uppaysdk,uppaywallet,uppayx1,uppayx2,uppayx3" />
此原生插件v-1.1.0以及以后版本无需配置
<meta-data name="com.baidu.lbsapi.API_KEY" value="d2oamESnhMkZykdI46rbubOf7sZ9ppGY"/>
value:百度地图 apiKey
iOS端注意事项: 1.创建 entitlements 文件,Yonbuilder 移动开发平台上的开发者,可通过此文件告诉编译服务器开通 Associated Domain 功能。配置方法参考论坛帖子。配置示例如下:
```js
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:developer.yonyou.com</string>
</array>
</dict>
</plist>
```
其中 com.apple.developer.associated-domains 对应的值 applinks:developer.yonyou.com 是配置的你的应用的Universal Links。详情参考 苹果文档
2.开通 Associated Domains。 登录苹果开发者账号,在左侧列表里找到 Identifiers,选中后再找到你的 Bundle ID (包名),选中该包名,配置开启其 Associated Domains 功能。
3.服务器端支持苹果 Universal Links。支持方法参考 论坛帖子。
4.如果支持微信支付,必须添加白名单如下:
关于白名单解释详情参考 Yonbuilder 移动开发平台官方文档之-----白名单配置
(1)用户在商户客户端中点击购买商品,商户客户端到商户后台发起下单;
(2)商户后台收到下单请求后,按照《银联商务全民付移动支付APP综合支付商户接入接口规范》文档要求向银商后台发送下单请求;
(3)银商后台接收到下单请求后,生成对应订单信息,并返回给商户后台(应答要素:appPayRequest等);
(4)商户后台接收订单信息,将订单信息返回至商户客户端;
(5)商户客户端使用订单信息(appPayRequest等)调用银商支付插件;
(6)银商支付插件根据传递订单信息唤起钱包APP(云闪付、微信、支付宝等)完成支付。
本原生插件封装了两套支付方案:
一、通过 pay 接口,原生插件实现签名加密获取支付订单过程。此接口仅供开发阶段测试使用。正式上线请使用方案二;
二、商户服务器端实现 1-4 步骤。获取支付的数据后调用 payWithData 接口支付。
支付订单,本接口仅供开发阶段测试使用。
pay({params}, callback(ret, err))
payChannel:
merOrderId:
mid:
tid:
goods:
totalAmount:
MD5Key:
msgSrc:
urlStr:
mobile:
merchantUserId:
notifyUrl:
srcReserve:
secureTransaction:
msgId:
ret:
{
resultCode:0000, //字符串类型;支付请求是否发送成功(成功0000,失败-1)。商户订单是否成功支付应该以商户后台收到支付结果。(仅ios支持)
resultInfo:'', //数字类型;支付结果参数 (仅ios支持)
resultMsg:'' //字符串类型;返回结果;(仅android支持)
}
err:
{
code: 1000 //数字类型;
//错误码:
//1000(用户取消支付)
//1001(参数错误)
//1002(网络连接错误)
//1003 (支付客户端未安装)
//2001 (订单处理中,支付结果未知(有可能已经支付成功),请通过后台接口查询订单状态)
//2002 (订单号重复)
//2003 (订单支付失败)
//9999 (其他支付错误)
msg: '' //字符串类型;支付失败描述
}
//支付宝支付
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.pay({
payChannel: 'aliPay',
merOrderId: '1028201811201136',
mid: '898310058124024',
tid: 'ood12355',
goods: {"goodsId":"666666",
"goodsName":"unify测试商品",
"quantity":"1",
"price":"1",
"goodsCategory":"测试商品分类",
"body":"测试商品说明"},
totalAmount: '100',
msgSrc:'NETPAY_DEMO',
MD5Key: 'dwpRz2B6akcp8fwp6JJjenHCH7FKHFcCPE3NkiMJAQzhtD3W',
urlStr:'https://qr-test1.chinaums.com/netpay-route-server/api/',
msgId:'builder001',
mobile:'18513952315',
secureTransaction:false
}, function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
//微信支付
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.pay({
payChannel:'wxPay',
merOrderId:'38168548768586438',
mid:'898310172770131',
tid:'89BG1669',
goods:{"goodsId":"666666",
"goodsName":"unify测试商品",
"quantity":"1",
"price":"1",
"goodsCategory":"测试商品分类",
"body":"测试商品说明"},
totalAmount:'100',
MD5Key:'fZjyfDK7ix7CKhhBSC8mQWTAtmp44JsTrbkkyKXtxNAxxPFT',
msgSrc:'WWW.SHHXQWLKJ.COM',
urlStr:'https://qr.chinaums.com/netpay-route-server/api/',
merchantUserId:'3028201705071221163636273176',
msgId:'dsa2231s',
mobile:'18576825643',
secureTransaction:false
}, function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
//云闪付支付
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.pay({
payChannel:'cloudPay',
merOrderId:'5000201811191219',
mid:'898310148160568',
tid:'12345678',
goods:{"goodsId":"666666",
"goodsName":"unify测试商品",
"quantity":"1",
"price":"100",
"goodsCategory":"测试商品分类",
"body":"测试商品说明"},
totalAmount:'100',
MD5Key:'AcZdi46z6GibDwi5WXQEdypEWt2WSdNH6RHT3YAwnmCWwQEG',
msgSrc:'WWW.PRODTEST.COM',
urlStr:'https://qr.chinaums.com/netpay-route-server/api/',
msgId:'11023',
secureTransaction:false
}, function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
//全民付移动支付**iOS端已废弃**
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.pay({
payChannel:'posFastPay',
merOrderId:'30285629311191686',
mid:'898310058124024',
tid:'00000001',
merchantUserId:'3028201705071221163636273176',
mobile:'18576825643',
totalAmount:'100',
msgSrc:'ERP_SCANPAY',
MD5Key:'3ypmTzxdXhFty7HCrZynehjcjdcaAb3HDRwJQpTFYZfjWHEZ',
urlStr:'https://qr.chinaums.com/netpay-route-server/api/',
msgId:'builder001',
secureTransaction:false
}, function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
(仅android支持)初始化,android调用 pay 接口前需要先调用此接口
init({params}, callback(ret, err))
ret:
{
status:true, //布尔类型;初始化成功
}
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.init( function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
Android 系统
可提供的 1.0.0 及更高版本
支付订单
payWithData({params}, callback(ret, err))
channel:
appPayRequest:
ret:
{
resultCode:0000, //字符串类型;支付请求是否发送成功(成功0000,失败-1)。商户订单是否成功支付应该以商户后台收到支付结果。(仅ios支持)
resultInfo:'', //数字类型;支付结果参数 (仅ios支持)
resultMsg:'' //字符串类型;返回结果;(仅android支持)
}
err:
{
code: 1000 //数字类型;
//错误码:
//1000(用户取消支付)
//1001(参数错误)
//1002(网络连接错误)
//1003 (支付客户端未安装)
//2001 (订单处理中,支付结果未知(有可能已经支付成功),请通过后台接口查询订单状态)
//2002 (订单号重复)
//2003 (订单支付失败)
//9999 (其他支付错误)
msg: '' //字符串类型;支付失败描述
}
var aUnifyPay = api.require('aUnifyPay');
aUnifyPay.payWithData({
channel: 'aliPay',
appPayRequest: '*****'
}, function(ret, err) {
if (ret.resultCode == '0000') {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
iOS 系统,Android 系统
可提供的 1.0.1 及更高版本