微信小程序支付

2023-10-26

微信小程序支付接口需要的参数timeStamp、nonceStr、package、signType、paySign

openid是在登录时获取的 只需要调取token里的内容就可以了

点击事件通过cardid来判断与传值

<view class="weui-flex__item">
    <view class="placeholder buy" data-cardid="{{items.cardid}}" bindtap="payclick">购买</view>
</view>
//点击购买按钮
payclick: function(options) {
  var cardid = options.currentTarget.dataset.cardid;
  payData.generateOrder(cardid); // 调用支付js
}

引用js公共文件

/* 微信支付 */
module.exports = {
  generateOrder: generateOrder
}

const app = getApp();
var urlData = require("../url/url.js");

//生成商户订单
function generateOrder(cardid) {
  var buyquestioncardUrl = urlData.getHostUrl() + urlData.getBuyquestioncardUrl(); // 地址
  var that = this
  wx.request({
    url: buyquestioncardUrl, //后台请求地址
    method: 'POST',
    data: {
      cardid: cardid
    },
    header: {
      'content-type': 'application/json',
      "x-access-token": app.globalData.token  // 在token里面获取openid
    },
    success: function(res) {
      var datas = res.data.data.data; // 获取返回的数据timeStamp、nonceStr、package、signType、paySign
      wx.requestPayment({
        timeStamp: datas.timeStamp,
        nonceStr: datas.nonceStr,
        package: datas.package,
        signType: datas.signType,
        paySign: datas.paySign,
        success(res) {
          console.log("success");
        },
        fail(res) {
          console.log("fail");
        },
        complete(res) {
          console.log("complete");
        }
      })
    },
    fail: function(res) {
      console.log("向后台发送数据失败")
    }
  })
}

另外附上资料参考微信小程序支付流程 获取code 、openid、timeStamp、nonceStr、package、signType、paySign、支付

//index.js
Page({
  data: {},
  //点击支付按钮进行支付
  payclick: function () {
    var t = this;
    wx.login({
      //获取code换取openID
      success: function (res) {
        //code = res.code //返回code
        console.log("获取code");
        console.log(res.code);
        var opid = t.getOpenId(res.code);
      }
    })
  },
  //获取openID
  getOpenId: function (code) {
    var that = this;
    wx.request({
      url: "",
      data: {},
      method: 'GET',
      success: function (res) {
        console.log("获取openid")
        console.log(res)
        that.setData({
          openid: res.data.openid,
          session_key: res.data.session_key
        })
        that.generateOrder(res.data.openid)
      },
      fail: function () {
        // fail
      },
      complete: function () {
        // complete
      }
    })
  },
  //生成商户订单
  generateOrder: function (openid) {
    var that = this
    wx.request({
      url: '',//后台请求地址
      method: 'POST',
      data: {
        gfee: '',
        gname: '',
        openId: openid
        //(商品价钱和商品名称根据自身需要是否传值, openid为必传)
      },
      success: function (res) {
        console.log("后台获取数据成功");
        console.log(res);
        var param = { "timeStamp": res.data.timeStamp, "package": res.data.package, "paySign": res.data.paySign, "signType": "MD5", "nonceStr": res.data.nonceStr };
         //发起支付
        that.pay(param);
      },
      fail: function (res) {
        console.log("向后台发送数据失败")
      }
    })
  },
  //支付
  pay: function (param) {
    var that = this;
    console.log("发起支付")
    console.log(param)
    wx.requestPayment({
      timeStamp: param.timeStamp,
      nonceStr: param.nonceStr,
      package: param.package,
      signType: param.signType,
      paySign: param.paySign,
      success: function (res) {
        console.log("success");
        console.log(res);
      },
      fail: function (res) {
        console.log("fail")
        console.log(res);
      },
      complete: function (res) {
        console.log("complete");
        console.log(res)
      }
    })
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序支付 的相关文章

  • gridlayout java_Swing-布局管理器之GridLayout(网格布局)-入门

    网格布局特点 l 使容器中的各组件呈M行 N列的网格状分布 l 网格每列宽度相同 等于容器的宽度除以网格的列数 l 网格每行高度相同 等于容器的高度除以网格的行数 l 各组件的排列方式为 从上到下 从左到右 l 组件放入容器的次序决定了它在

随机推荐