收藏
回答

小程序支付 pay函数调用成功 paycb回调函数没有反应 没有调用日志?


// 云函数入口文件 pay

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": event.goodName, //商品名称 或 商品描述

    "outTradeNo": event.outTradeNoTo, //订单号

    "spbillCreateIp": "127.0.0.1", //回调地址

    "subMchId": "1615", // 微信支付商户号 

    "totalFee": event.totalFee, //商品支付金额 单位(分) 100代表一块钱

    "envId": "yjiechuang-env-1gfd", //云开发环境ID

    "functionName": "paycb" //回调的云函数

  })

  return res

}


// 云函数入口文件 paycb

const rp = require('request-promise-native');

const cloud = require('wx-server-sdk')

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

// 云函数入口函数

//exports.main = async (event, context) => {

  exports.main = async (event, context) => {

  console.log('jgjgjgjj')

  console.log('payment callback!', event)

 

  if(event.resultCode == 'SUCCESS'){  //根据result_code查看业务结果成功进行提交数据告诉服务器

    // const urlTmp = getApp().data.baseUrl ;

    const urlTmp = "http://yczb.canurcster.xyz"

    rp(urlTmp + '/home/supplier/notify?outTradeNo='+event.outTradeNo).then(function (e) {

      console.log("响应数据:" + e)

    })

  }

  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微信云函数,有微信给我们生成支付前的必要参数

        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-20

    paycb部署成功了吗?

    可以手动触发测试一下。

    2023-02-20
    有用
    回复 3
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-20
      2023-02-20
      回复
    • jiaogui.@,;$"包谷   15078360745
      jiaogui.@,;$"包谷 15078360745
      2023-02-20
      部署成功了。用小程序直接调用paycb正常,有日志。 但是用支付程序,回调函数没有反应,没有日志。
      2023-02-20
      回复
    • 无聊时光
      无聊时光
      星期一 10:43回复jiaogui.@,;$"包谷 15078360745
      我也碰到了这个问题,请问有解决吗?
      星期一 10:43
      回复
登录 后发表内容