收藏
回答

查询订单失败,提示Err: Request failed with status code 404

const cloud = require('wx-server-sdk')
const axios = require('axios')
const config = require('../config')
const Guid = require('guid')
const fs = require('fs')
const rsa = require('../rsa')
const PRIMARY_KEY = fs.readFileSync('../apiclient_key.pem')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境e
exports.main = async (event, context) => {
    function makeSignStr(...args{
      return args.join('\n') + '\n'
    }
    function makeSignMes(obj{
      return Object.keys(obj).map(key => `${key}="${obj[key]}"`).join()
    }
    let href = 'https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no'
    let url = new URL(`${href}/${event.outTradeNo}?mchid=${config.mchid}`)
    let timestamp = Math.floor(+new Date / 1000).toString()
    let nonceStr = Guid.raw().replace(/-/g'')
    // let nonceStr = '593BEC0C930BF1AFEB40B4A08C8FB242'
    let signStr = makeSignStr('GET', url.pathname + url.search, timestamp, nonceStr,"")
    let signature = rsa.sign(signStr, PRIMARY_KEY)
    let signMes = makeSignMes({
      mchid: config.mchid,
      "serial_no": config.serial_no,
      "nonce_str": nonceStr,
      timestamp,
      signature
    })
    const { data } = await axios.get(url.href, {
      headers: {
        "Accept"'application/json',
        // 'Content-Type': 'application/json',
        "Authorization"'WECHATPAY2-SHA256-RSA2048 '+ signMes
      }
    })
    console.log(data)
    return data
}
回答关注问题邀请回答
收藏

1 个回答

  • Memory
    Memory
    11-01

    404是订单不存在,检查一下给的订单号对不对

    11-01
    有用
    回复 2
    • ℃ ๑҉
      ℃ ๑҉
      11-04
      我发现原因了,代码没问题,我测试代码时用了云函数和自己写的node两种方法,云函数产生的订单出现在了服务商模式下的订单里面,这里面的订单只能用云函数查,自己写的
      node查询代码查不到。自己写的node产生的订单出现在了本商户的订单里面,只能自己写node查,云函数提供的查询方法也查不到。不知道微信为什么搞这么复杂。
      11-04
      回复
    • Memory
      Memory
      11-04回复℃ ๑҉
      不支持跨商户查单的,云调用的订单是服务商模式的订单,可以改为工作流方式就统一了
      11-04
      回复
登录 后发表内容