收藏
回答

部署成功了。用小程序直接调用paycb正常,有日志。 但是用支付程序,回调函数没有反应,没日志?

// 云函数入口文件
const cloud = require('wx-server-sdk')


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境


// 云函数入口函数  pay
exports.main = async (event, context) => {
  const res = await cloud.cloudPay.unifiedOrder({
    "body": event.goodName, //商品名称 或 商品描述
    "outTradeNo": event.outTradeNoTo, //订单号
    "notify_url""https://pay.weixin.qq.com/index.php",//是正url有问题码?这个网址是从哪里获取的?
    "spbillCreateIp""127.0.0.1"//回调地址
    "subMchId""16315"// 微信支付商户号 
    "totalFee": event.totalFee, //商品支付金额 单位(分) 100代表一块钱
    "envId""yjiechuang-env-1g6k3fd"//云开发环境ID
    
    "functionName""paycb" //回调的云函数
  })
  return res
}


// 云函数入口文件  paycb
const cloud = require('wx-server-sdk')


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境


// 云函数入口函数
exports.main =  async (event, context) => {
 
  //return {
   //     sum: event.a + event.b

  //}

  const res = {errcode:0,errmsg:''}//需要返回的字段,不返回该字段则一直回调
  return res

}




小程序代码:

goumai_button1:function(e){

    var that = this;

    var outTradeNo = ""//订单号

    var jiaqian = 1// 开发阶段先设置交易金额为0.01元

 

    // var jiaqian = parseInt(that.data.filesM * 100);  //获取真实付款金额

    outTradeNo = Math.floor((Math.random() * 1000) + 1) + "1371" + new Date().getTime(); //生成订单号

    that.setData({

      outTradeNo: outTradeNo

    })

    

    //准备支付(先获取必要参数)

    wx.cloud.callFunction({

      name: 'pay',   //调用微信得pay云函数

      data: {

        goodName: "农夫山泉",   // 商品名称 或 商品描述

        totalFee: jiaqian,                   // 需要支付的金额

        outTradeNoTo: outTradeNo             // 生成的订单号

      },

      success: res => {

        console.log("获取字符参数成功", res);   // 此处是通过pay微信云函数,有微信给我们生成支付前的必要参数

        console.log("res.result.payment", res.result.payment);

        const payment = res.result.payment    // 微信会返回支付需要的必备数据

        wx.hideLoading()

 

        //调起支付(获取必要参数后,开始真实调用微信支付窗口)

        wx.requestPayment({

          ...payment,

          success(res) {   //如果支付成功了,进入success函数回调(成功后具体操作看实际业务需求)

            console.log('支付成功', res)

            wx.showLoading({

              title: "付款成功"

            })

            setTimeout(function () {

              wx.hideLoading()

              //that.upload(e);  //将用户购买的数据 交给 后台

            }, 700)

 

          },

          fail(res) {

            console.error('支付失败', res)

            wx.showLoading({

              title: "支付失败"

            })

            setTimeout(function () {

              wx.hideLoading()

            }, 1600)

          }

        })

 

      },

      fail(res) {

        console.log("获取支付参数失败", res);

      }

    })




  }
回答关注问题邀请回答
收藏

1 个回答

  • 跨商通
    跨商通
    2023-02-21
    "envId""yjiechuang-env-1g6k3fd"//云开发环境ID
    

    换成wxContext.ENV试试。

    2023-02-21
    有用 1
    回复 9
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-21
      一样的回调没有反应,没有日志
      2023-02-21
      回复
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-21
      2023-02-21
      回复
    • 跨商通
      跨商通
      2023-02-21回复jiaogui.@,;$"包谷 15078360745
      notify_url不用填试试。
      2023-02-21
      1
      回复
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-21
      回调函数有日志了。证明被调用了。
      2023-02-21
      回复
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-21
      那么notify_url的网址,http://******/paycb   这个*****部分是什么?怎么获得?
      2023-02-21
      回复
    查看更多(4)
登录 后发表内容