YunGouOS开放平台-文档中心-小程序支付

小程序支付

YunGouOS

用户在小程序内发起的支付,返回小程序支付所需的package

小程序支付比较特殊,受限于微信官方的政策,个人用户申请的支付接口必须与小程序APPID绑定。

由于个人申请的小程序账户无法认证,故无法完成绑定,所以支付无法在自己的小程序内发起。该问题目前已经反馈给微信官方,等待官方后期优化相关流程。目前采用小程序跳转方式完成支付。

目前我们接口设计上也预留了自己小程序发起的返回结果,只要官方后期优化绑定流程支持个人绑定即可在自己小程序内发起支付。

支付流程:用户小程序A 付款页面点击付款->通过小程序跳转 跳转到 “支付收银” 小程序->支付收银小程序将自动发起微信支付->支付成功后携带支付结果返回用户小程序A

开源小程序集成代码:https://gitee.com/YunGouOS/YunGouOS-PAY-SDK/tree/master/YunGouOS-WxApp-SDK

注意事项:请注意在自己的页面中做交互处理,原则上来说在 “支付收银” 里面我们不提倡跟用户做交互,所有错误均返回给您自己的小程序。请通过App.onShow方法获取到支付结果进行交互

页面展示

接口地址:https://api.pay.yungouos.com/api/pay/wxpay/minAppApi

请求类型: POST

请求参数

参数名

参数类型

是否参与签名

描述

out_trade_no

String

订单号(不可重复)

total_fee

String

支付金额(范围:0.01~999999)

mch_id

String

微信支付商户号

body

String

商品简单描述

title

String

支付收银小程序页面顶部的title 可自定义品牌名称 不传默认为 “收银台” 如传递参数 “海底捞” 页面则显示 “海底捞-收银台”

attach

String

附加数据,回调时候原路返回

notify_url

String

异步回调地址,用户支付成功后系统将会把支付结果发送到该地址,不填则无回调

sign

String

签名(见签名算法文档)

返回结果

参数名

参数类型

是否必填

描述

code

int

状态【0:成功;1:失败】

data

Object

返回数据

cashierParam

Object

收银台显示参数

payName

String

收款商户名称

minPayParam

String

小程序支付所需的package

msg

String

消息

返回示例:

"root":{

3 items

"code":

int0

"data":{

2 items

"minPayParam":

string"{"appId":"wxd9634afb01b983c0","nonceStr":"1557499763992","package":"prepay_id=wx102249259845243af79d06200565809317","paySign":"A1D6EBD081B5F5EC332293FE6015E61E","signType":"MD5","timeStamp":"1557499763"}"

"cashierParam":{

1 item

"payName":

string"YunGouOS测试"

}

}

"msg":

string"微信下单成功,请在请在微信小程序内发起支付"

}

接入步骤:

第1步:在你的小程序app.json文件中 添加 “支付收银” 小程序的appid为:wxd9634afb01b983c0

        "navigateToMiniProgramAppIdList": [
            "wxd9634afb01b983c0"
        ]
                

第2步:在你的小程序需要支付的页面,执行小程序跳转

        let data={
            out_trade_no:"我是订单号",
            total_fee:"我是付款金额",
            mch_id: "我是微信支付商户号",
            body: '我是产品描述',
            notify_url: '我是回调地址',
            sign:'我是签名',
            title:'我是收银台页面显示标题'
        }
        wx.navigateToMiniProgram({
            appId: 'wxd9634afb01b983c0',//支付收银小程序的appid 固定值 不可修改
            path: '/pages/pay/pay',//支付页面 固定值 不可修改
            extraData: data,//携带的参数 参考API文档
            success(res) {
              // 打开成功业务
            }, fail(res) {
              //打开失败业务
            }
        });  

第3步:用户无论支付成功或者失败均会返回您的小程序别携带以下参数

        extraData: {
            code: 0,//支付结果 0表示支付成功、1表示支付失败
            msg:'订单号错误'//信息提示
            data:{
               orderNo: "12345"//您的订单号
            },
        }

第4步:您的小程序接受参数,进行您的业务处理(注意:获取参数在您的App.onShow方法中获取)

        App({
            onLaunch(options) {
                // Do something initial when launch.
            },
            onShow(options) {
                //参数示例:{"code": 0,"data":{"orderNo":"123456"},"msg": "支付成功"}
                let extraData=options.referrerInfo.extraData;
                if(extraData){
                    //不管成功失败 先把支付结果赋值
                    this.globalData.payStatus=extraData.result;
                    if(extraData.result==false){
                      wx.showToast({
                        title: extraData.msg,//错误提示
                        icon: 'none',
                        duration: 3000
                      });
                      return;
                    }
                    //支付成功
                    this.globalData.orderNo=extraData.orderNo;
                 }
            },
            onHide() {
                // Do something when hide.
            },
            onError(msg) {
                console.log(msg)
            },
        });

第5步:在您的页面中获取支付结果参数(注意:必须在页面的onShow方法中获取)

        var app = getApp();
        //调用app方法获取返回结果数据

        onShow:function(){
            //支付完成返回,开始处理数据
            if(app.globalData.payStatus!=null&&app.globalData.payStatus!=undefined){
             let orderno=app.globalData.orderNo;
             //处理您自己的业务
           }
        }

        

Original url: Access
Created at: 2019-10-21 13:19:24
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论