评论

全云开发V3支付电商收付通,第一天,统一下单,居然秒过了。

微信支付V3电商收付通踩坑实录之一。

接了个甲方的项目,要求用全云开发实现微信支付V3电商收付通,谈妥后,于是开干。

先看文档,再找攻略,第一步开始写段统一下单的测试代码。非常神奇的事情发生了,居然是秒过的,直接拿到prepaid_id!秒过,秒过,秒过,一个红错误都没有,难以置信;

V3收付通文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/guide.shtml

遥想当年做V2小程序支付,仅一个统一下单的接口,就调得让人欲生欲死,前前后后一个星期不止。

我自己也有点懵圈,这是什么情况,V3新的接口里,签名?Authorization?Headers?这些都是闹着玩的吗?能不能严肃点?

想了一会儿静静,继续,看能不能在小程序里拉起wx.requestPayment,结果V3文档里一句小程序支付的都没有,难道不支持?立马在论坛大佬群里@了一下娇华同学,得到肯定回答,于是,wx.requestPayment拉起,美滋滋地支付了0.01元,统一下单,完美。

云函数相关代码:

//JSAPI下单+JS调起支付
async function partner_transactions_jsapi(event) {
  let wxContext = cloud.getWXContext()
  let jsonStr = JSON.stringify({
    sp_appid: wxContext.APPID,
    sp_mchid: mchid,
    notify_url: config.notify_url,
    payer: {
      sp_openid: wxContext.OPENID
    },
    ...event.unified_order,//小程序端传入的统一下单参数
  })
  let method = 'POST'
  let url = '/v3/pay/partner/transactions/jsapi'
  let headers = getHeaders(method, url, jsonStr)
  let res = await rp({ method, uri: config.host + url, headers, body: jsonStr })
  let prepay_id = JSON.parse(res).prepay_id
  return getPayment(prepay_id) //返回拉起小程序 wx.requestPayment 所需参数
}

小程序端测试代码:

  //JSAPI下单+JS调起支付
  partner_transactions_jsapi: async function () {
    console.log('partner_transactions_jsapi')
    let res = await wx.showModal({content: '统一下单?'})
    if (res.confirm) { } else return
    wx.showToast({ icon: 'loading' })
    let unified_order = { //测试订单
      sub_mchid: SUB_MCHID,
      description: '电商收付通测试',
      out_trade_no: "otn" + Math.random().toString(36).substr(2, 15) + parseInt(Date.now() / 1000),
      amount: {
        total: 10,
        currency: 'CNY'
      },
    }
    res = await wx.cloud.callFunction({
      name: 'wxPayV3',
      data: {
        action: 'partner_transactions_jsapi',
        unified_order
      }
    })
    res = await wx.requestPayment({ ...res.result }).catch(err => console.log(err))
    console.log(res)
    wx.showToast({})
  },


今天先弄这么多,更多踩坑实录继续。

最后一次编辑于  09-11  
点赞 0
收藏
评论

1 个评论

  • 北望沣渭
    北望沣渭
    09-09

    云端是nodejs 10.15.3 环境,https://github.com/TheNorthMemory/wechatpay-axios-plugin 这个lib在10.15.0下做过测试,不仅是支付,已知开放出来的167个v3接口,均可正常跑转起来,可以尝试尝试。

    09-09
    赞同
    回复 3
    • 老张
      老张
      09-09
      真不错。之前我怎么没找到你这篇?卡在上传图片这里6个多小时。你们的源码能借签不少。可惜我这三天里,基本收付通都跑通了,目前只做了甲方要求的收付通的其中24个接口,等以后有需求了再研究。
      09-09
      回复
    • 北望沣渭
      北望沣渭
      09-09回复老张
      https://developers.weixin.qq.com/community/develop/article/doc/000cc48a370008b8ff9a64a3c51013 老帖了…
      09-09
      回复
    • 老张
      老张
      09-09回复北望沣渭
      哈,搜到过,然后被坑人的TNWX吸引走了。不过无所谓了。都搞定了。再弱弱地问一下,你们的商业模式是什么样的?靠什么赚钱呢?
      09-09
      回复
登录 后发表内容