接入文档
更新日志
版本号 |
更新内容 |
发布时间 |
0.4 |
初始化版本 |
2019-03-19 |
0.5 |
防止钱包重复点击出错;钱包返回,页面闪烁的问题;支持弹框样式 |
2019-03-25 |
0.5.1 |
弹框样式微调 |
2019-03-26 |
0.5.3 |
支持微信mweb支付 |
2019-03-29 |
0.5.4.1 |
添加无UI支付接口 |
2019-04-25 |
0.5.5 |
加入支付结果页,返回的code |
2019-04-30 |
0.5.6 |
修复切换生产和测试环境bug |
2019-05-07 |
0.5.7 |
支付渠道提交时,错误信息显示优化 |
2019-05-09 |
0.5.8 |
解决 wxpay.getType() 为none异常 |
2019-05-09 |
0.5.9 |
解决华为手机mweb 微信支付流程异常。manifest.json 文件内容有变更,wxpay加了一个url配置 |
2019-05-16 |
0.6.8 |
更新域名 |
2019-06-18 |
安装
复制xpay整个文件夹到工程里面,并保持xpay目录存在
准备
在app.ux 中加入
import xpay from './xpay/xpay'
export default {
xpay: xpay
}
在manifest.json中加入,并调整下微信支付的相关参数
"features": [
{ "name": "system.prompt" },
{ "name": "system.router" },
{ "name": "service.alipay" },
{ "name": "system.fetch" },
{ "name": "system.package" },
{
"name": "service.wxpay",
"params": {
"package": "xxxx",
"sign": "abcdefg",
"url": "http://xpay-h5.wfipay.com/xpay-h5-static/f9zP5E6C/#/xpay-wechat-page"
}
}
...
"pages": {
"xpay/xpaySdkWalletResult":{
"component": "index"
},
"xpay/xpaySdkWechatResult":{
"component": "index"
},
"xpay/xpaySdkResult":{
"component": "index"
},
//如果需要单独的支付页面,加入下面这个,否则忽略这个页面
"xpay/xpaySdkDetail":{
"component": "index"
}
...
}
主要是在manifest.json中声明wxpay这个feature是填上走微信后台注册流程时用到的包名和签名
这里填的签名需要使用快应用的工具获取,获取的方法和微信的工具一致,但是得到值和微信的不一样,不要和微信的签名混淆.
设置生产\测试环境 (默认生产环境)
this.$app.$def.xpay.setDebug(true/false 测试/生产)
唤起收银台
支付收银台页面样式
this.$app.$def.xpay.pay(payParam, 'com.application.demo', undefined, function(payStatus, msg){
//处理返回结果
//const PAY_SUCCESS = 1
//const PAY_CANCEL = 0
//const PAY_ERROR = -2
//const PAY_INVALID = -1
//const PAY_CANCEL_BACK = -3
//const PAY_RESULT_DONE = 11 同时msg可能是:支付成功,支付中,支付失败,支付已关闭,订单异常
})
payParam 具体内容,见下面定义
com.application.demo 为快应用的包名
pickerData undefined
弹框样式
<import name="xpay-sdk-picker" src="../xpay/xpaySdkDetail/xpaySdkPicker"></import>
pickerData: {
visible: '0',
background: 'rgba(0,0,0,0.1)',
payModel: '{}',
packageName: ''
}
<xpay-sdk-picker visible="{{pickerData.visible}}"
background="{{pickerData.background}}" pay-model="{{pickerData.payModel}}" package-name={{pickerData.packageName}} @qui-overlay-click="overlayClick"></xpay-sdk-picker>
this.$app.$def.xpay.pay(payParam, 'com.application.demo', that.pickerData, function(payStatus, msg){
//处理返回结果
//const PAY_SUCCESS = 1
//const PAY_CANCEL = 0
//const PAY_ERROR = -2
//const PAY_INVALID = -1
//const PAY_CANCEL_BACK = -3
//const PAY_RESULT_DONE = 11 同时msg可能是:支付成功,支付中,支付失败,支付已关闭,订单异常
})
payParam 具体内容,见下面定义
com.application.demo 为快应用的包名
pickerData 步骤1中的数据
overlayClick(){
this.pickerData.visible = '0'
}
无UI版本
//Step1
//payParam 具体内容,见下面定义
//payPage 为支付结果页,点击确认需要跳转的目的地
this.$app.$def.xpay.silentPay(JSON.stringify(payParam), payPage, function(payStatus, msg){
//处理全局返回结果
//const PAY_SUCCESS = 1
//const PAY_CANCEL = 0
//const PAY_ERROR = -2
//const PAY_INVALID = -1
//const PAY_CANCEL_BACK = -3
//const PAY_RESULT_DONE = 11 同时msg可能是:支付成功,支付中,支付失败,支付已关闭,订单异常
}, function(payStatus, msg){
//处理获取渲染数据的返回结果
//0 请求成功,msg 为step2 中的payModel
//-1 请求失败,msg为错误信息
}
})
//Step2
//payModel 为step1 中的返回结果
//传入的this,需要赋值下 this.packageName = "" 为快应用的包名
//微信支付:this.$app.$def.xpay.useWechatPay(this, this.payModel)
//支付宝支付:this.$app.$def.xpay.useAliPay(this.payModel)
//钱包支付: this.$app.$def.xpay.useWifiPay(this, this.payModel)
payParam
payBizData
名字 |
类型 |
描述 |
是否可选 |
security_type |
String(6) |
Sign字段签名方式 ,目前为RSA |
NO |
sign |
String(128) |
商户签名,签名生规则见 签名、加密机制 章节 |
NO |
pay_token |
String(128) |
支付平台支付凭证PayToken,由生成支付交易服务生成,用来验证支付请求的有效性 |
NO |
out_trade_id |
String(64) |
外部订单号,第三方商户自己生成的订单标识,必须要唯一不能重复 |
NO |
transaction_id |
String(64) |
业务流水号,商户应保证唯一;业务流水号,和订单号不一样;只是个唯一的流水号 |
NO |
payBaseData
名字 |
类型 |
描述 |
是否可选 |
appid |
String(32) |
游戏传 appid |
NO |
out_user_id |
string(64) |
连尚账户相关:union_id...uhid... |
二选一可为空 |
guest_id |
string(64) |
1.CP方给出的:openid ;用openid + unionid 在支付端进行 查询连尚统一账户信息:uhid;2.游客:传给定值:GUESTER |
二选一可为空 |
client_user_id |
string(64) |
1.游客时:游戏cp方必传该字段;2.cp方定义的用户id;其他接入渠道不是必传项 |
NO |
version |
String(6) |
服务版本号,传 2 |
NO |
request_id |
String(64) |
请求信息标识,商户应保持唯一 |
NO |
service_name |
String(32) |
服务名称,跳转支付服务为"paymentAccessRequest" |
NO |
platform |
String(10) |
最终支付来源,即商户使用何种方式调用支付平台支付 H5/Quick App/Online/Native SDK/Offline/Android/iOS |
NO |
time_stamp |
String(14) |
时间戳(请求时的时间) |
NO |
|
compress_type |
String(2) |
压缩类型:0(不压缩),1(gzip) |
NO |
language |
Int |
语言 填0=中文 |
NO |
merchant_id |
String(32) |
支付平台商户ID,第三方接入支付平台支付前向支付平台支付申请获得 |
NO |
Example
{
"payBizData": {
"pay_token": "",
"sign": "...",
"out_trade_id": "",
"transaction_id": "",
"security_type": "RSA"
},
"payBaseData": {
"appid": "",
"out_user_id": "",
"request_id": "",
"version": "2",
"service_name": "paymentAccessRequest",
"client_user_id": "",
"platform": "Quick App",
"time_stamp": "",
"language": 0,
"compress_type": "0",
"merchant_id": "",
"guest_id": ""
}
}
tips
- 小米手机上遇到deeplink回调,会出现缓存的情况,重启手机解决。
- 微信h5支付开通流程
- 申请微信支付,并开通h5支付
- 申请服务号,完成认证
- 微信支付后台,绑定服务号appid
- 提供 服务号appid,微信商户merchantid,微信商户 api_key