接入文档

更新日志

版本号 更新内容 发布时间
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"
      }
      ...
   }

微信支付 sign生成 官方文档地址

主要是在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: ''
}
  • 在template中添加
<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支付
      • 授权域名填写
        • xiaoyiads.com
    • 申请服务号,完成认证
    • 微信支付后台,绑定服务号appid
    • 提供 服务号appid,微信商户merchantid,微信商户 api_key