zhaobinglong / myBlog

https://zhaobinglong.github.io/myBlog/
MIT License
7 stars 0 forks source link

微信支付对接记录 #133

Open zhaobinglong opened 3 years ago

zhaobinglong commented 3 years ago

微信小程序基于云函数快速接入支付

参考

https://developers.weixin.qq.com/community/develop/doc/0002222108ced8eaa45ac677351c01

https://segmentfault.com/a/1190000038619144

报错1

"requestPayment:fail parameter error: parameter.timeStamp should be String instead of Undefined;parameter.nonceStr should be String instead of Undefined;parameter.package should be String instead of Undefined;parameter.signType should be String instead of Undefined;parameter.paySign should be String instead of Undefined;"


## 云函数代码
```javascript
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (event, context) => {
  const res = await cloud.cloudPay.unifiedOrder({
    "body" : "小秋TIT店-超市",
    "nonceStr": '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
    "outTradeNo" : "1217752501201407033233368018",
    "spbillCreateIp" : "127.0.0.1",
    "subMchId" : "1605293742", // 商户id
    "totalFee" : 1,
    "envId": "poquan-7tg7d",
    "functionName": "pay_cb",
    "tradeType": 'JSAPI'
  })
  return res
}

// 小程序调用代码

    wx.cloud.callFunction({
      name: 'pay',
      data: {
        // ...
      },
      success: res => {
        const payment = res.result.payment
        wx.requestPayment({
          ...payment,
          success: (res) => {
            console.log(res)
          },
          fail: (res) => {
            console.log(res)
          }
        })
      },
      fail: console.error,
    })

云函数支付失败的时候返回

{"returnCode":"FAIL","returnMsg":"total_fee is empty. ","errCode":0,"errMsg":"cloudPay.unifiedOrder:ok"}
zhaobinglong commented 3 years ago

验签失败

"errMsg":"cloud.callFunction:ok","result":{"returnCode":"FAIL","returnMsg":"错误的签名,验签失败","errCode":0,"errMsg":"cloudPay.unifiedOrder:ok"},"requestID":"325f816e-f0dd-11eb-80b0-32a98484f02d"
let payData = {
      body: '破圈运动-体验卡',
      detail: '', // detail为空会报告签名失败,必须有
      outTradeNo: xxxxx,
      openid:xxxx,
      totalFee: 19900
}