微信小程序云开发处理微信支付成功的回调函数(云函数实现)

2023-05-16

在使用微信小程序开发微信支付功能时,使用云开发中的微信支付云调用,将商品信息、支付价格等信息传入云函数中,并在返回的字段payment获取wx.requestPayment接口所需要的所有信息。通过此方法完成微信支付,在wx.requestPayment支付完成后,支付用户如果不点击支付界面中的完成按钮,wx.requestPayment不会触发回调函数success,因此如果将支付后的数据处理(如更新服务器中支付状态、更新商品余量等)就不会触发相应函数。

小程序这样设计wx.requestPayment的回调函数,目的在于将支付结果的处理放在服务器端,不能将支付结果的修改权限交给每一个付款的客户端(即不能自己付完款然后自己告诉服务器自己付款完成了!),因此这不是wx.requestPayment的BUG!!那么通过云开发怎么实现支付结果的通知呢?

在微信支付云调用中,有两个参数functionName和envId,这两个参数就是用于支付结果回调用的。

微信支付云调用中云函数的代码:(注意functionName和envId要填写需要调用的云函数ID和函数名)

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

cloud.init()

// 云函数入口函数
exports.main = async function(event, context) {
  const res = await cloud.cloudPay.unifiedOrder({
    "body" : event.body,//支付内容描述
    "outTradeNo" : event.outTradeNo,//支付订单号
    "spbillCreateIp" : event.spbillCreateIp,//这里填这个就可以
    "subMchId" : event.subMchId,
    "totalFee" : event.totalFee,//订单总金额
    "envId": "data-xxxx",//回调函数所处云开发环境ID,注意这两个参数即为支付结果回调的传入参数
    "functionName": "payBack",//回调函数名,注意这两个参数即为支付结果回调的传入参数
  })
  return res
}

我们新建云函数payBack,在云函数中打印回调信息:

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

cloud.init({
  env:cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  console.log('payment callback!',event)
  //接下来可写支付成功后的服务器数据更新代码
}

将新建的云函数payBack上传部署至云开发环境中,此时当支付完成时,回调函数就会被触发,回调函数内容:

回调函数的回调信息可在云控制台中云函数的日志中进行查看!!接下来就可以根据这些信息添加功能代码了!

注意:

支付结果回调的云函数必须返回如下一个对象,否则会视为回调不成功,云函数会收到重复的支付回调:

字段名

变量名

必填

类型

描述

错误码

errcode

Number

0

错误信息

errmsg

String

 云函数完整代码:

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

cloud.init({
  env:cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  const orderId = event.outTradeNo
  const openid = event.userInfo.openId
  const returnCode = event.returnCode
  const cashFee = event.cashFee
  if(returnCode == 'SUCCESS'){
    const db = cloud.database()
    //更新云数据库数据
    const res = {errcode:0,errmsg:''}//需要返回的字段,不返回该字段则一直回调
    return res
  }
}

上一篇关于如何使用微信原生云函数进行微信支付云调用的教程:微信小程序云开发原生支持微信支付(官方云函数微信支付方法,无需服务器)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序云开发处理微信支付成功的回调函数(云函数实现) 的相关文章

  • [飞控]从零开始建模(三)-控制分配浅析

    根据之前的文章 xff0c 我们的模型其实已经完成了 xff0c 模型的输入是四个电机的转速 xff0c 输出是我们需要的状态 位置 xff0c 速度 xff0c 加速度 xff0c 角加速度 xff0c 角速度 xff0c 角度 xff0
  • [飞控]姿态误差(三)-四元数和轴角求误差

    https zinghd gitee io Att err3
  • Matlab中的Smith 预估器

    Smith Predictor是针对时滞系统的 原理 xff1a 看Matlab help中的 34 Control of Processes with Long Dead Time The Smith Predictor 34 足矣 xf
  • meson和pkg-config

    最近再看simple cam xff0c 它是用meson构建的 有这样一句 xff1a deps 61 dependency 39 libevent pthreads 39 执行编译时报错 xff1a meson build 16 0 E
  • ubuntu 22.04右上角找不到wifi图标,有线网络也失效

    起因是我将显示驱动由默认的nouveau换成了nvidia xff0c 然后重启后在右上角就看不到wifi图标了 执行 96 sudo lshw c network 96 显示 xff1a network UNCLAIMED 执行sudo
  • PIE

    1 以2812为例 xff08 28335也是 xff09 xff0c PIE Vector在Memory Map的位置是0x0D00 0x0E00 这个是在cmd文件中的MEMORY部分指定的 xff1a PIE VECT origin
  • VS2013取消预编译头

    创建C 43 43 Win32控制台时忘了取消预编译头 xff0c 怎么取消 xff1f 右键项目 gt 属性 gt 配置属性 gt C C 43 43 gt 预编译头 gt 不使用预编译头 改天再写预编译头是干嘛的
  • Xmanager 6 图形化界面连接Centos7 配置步骤

    1 前提 Centos 7已经安装就绪 2 安装Xmanager 6 本博客以Xmanager6 0 0108为例 a 首先双击可执行文件 出现如下安装界面 点击 下一步 nbsp nbsp nbsp nbsp nbsp nbsp nbsp
  • VS中VC++目录中的$是什么意思

    VC ExecutablePath x64 项目是x64平台 WindowsSDK ExecutablePath VS ExecutablePath MSBuild ExecutablePath VC IncludePath VCInsta
  • 关于单应性矩阵的理解:Homography matrix for dummies

    尽量写的通俗一点 xff0c 因为从某种程度上讲 xff0c 本人也是dummy 1 先说homogeneous coordinate xff0c 齐次坐标 一幅2D图像上的非齐次坐标为 x y xff0c 而齐次坐标为 x y 1 xff
  • 关于RANSAC的理解

    先说最小二乘 ok xff0c 你手头有一堆数据 xff0c 比如这些蓝点 xff1a 那么我们假设它符合一个直线模型 xff1a y 61 ax 43 b xff0c 用最小二乘就可以很容易求解出未知参数a和b 最小二乘大法确实好哇 xf
  • Visual Studio中监视数组

    比如有一个double h 9 xff0c 如果选择监视 xff0c 那么就只会监视h 0 xff0c 如果想监视其他元素 xff0c 难道只能h 1 h 2 一个个的添加吗 xff1f 当然不需要 xff0c 在监视中输入h 9就可以了
  • 在编译PX4之前,你需要知道的几件事

    1 在git上clone代码 xff0c 必须是clone xff0c 因为编译时需要有 git文件夹 如果你看Makefile就会发现有这么一行 xff1a Enforce the presence of the GIT reposito
  • 马氏距离与卡方分布

    最近在看 Fundamentals of object tracking xff0c 看到最近邻滤波时 xff0c 碰到了题中的两个概念 以下内容基本来自wiki xff0c 读者有不懂的地方看wiki更清晰明了 1 马氏距离 Mahala
  • PX4中的mavlink

    简介 px4与地面站的通信协议是mavlink xff0c 对于其消息格式的介绍看这里和这里 需要注意几点 xff1a 不光是px4与qgroundcontrol通信通过mavlink xff0c 有一些sensor也支持mavlink m
  • STM32F1Debug,定时器时基初始化参数

    STM32F1 xff0c 定时器时基初始化参数 错误代码 xff1a 在初始化时基时 xff0c 没有给TIM ClockDivision和TIM RepetitionCounter赋值 错误代码 xff1a span class tok
  • dockerfile详解

    前言 各位想必应该记得 xff0c 我们此前如果安装一个nginx的话 xff0c 安装完以后 xff0c 我们说过很多次了 xff0c 通常不会运行在默认配置下 xff0c 那因此 xff0c 我们通常需要去改一改它的配置文件或者定义模块
  • docker hub + github action x持续集成CI/CD

    docker 43 github 持续集成CI CD docker 持续集成 参考官网 xff1a https docs docker com ci cd best practices 的大部分内容 2020 Jetbrains devel
  • 利用爬虫获取免费IP代理

    项目目标 通过爬虫获取 西拉代理 xff08 http www xiladaili com xff09 上的高匿代理 xff0c 并储存至一个列表 项目分析 首先对网页进行观察 xff0c 主体内容如下图所示 不但指明了代理IP 协议类型
  • DOCKER windows 7 详细安装教程

    Edit DOCKER windows安装 编者 xff1a xiaym 日期 xff1a 2015年1月20日 排版工具 xff1a 马克飞象 QQ 252536711 DOCKER windows安装 1 下载程序包2 设置环境变量3

随机推荐

  • 职场里不能与之结为团队的十种人

    俗话说 xff1a 女怕嫁错郎 xff0c 男怕入错行 同样 xff0c 一个人进入职场最怕的就是遇上了自己无法与其默契的某些团队成员 xff0c 这会影响到自己的事业进取 xff0c 影响到自己努力奋斗的成果收获 xff0c 影响到自己做
  • python读取大疆P1相机POS

    大疆P1相机读取POS xff0c 算法不是很好 xff0c 但是可以用 未来有好的算法再贡献 import os import os path import exifread workspace 61 r 39 G 20210727 39
  • Java数据结构之Lambda表达式

    目录 1 背景1 1 Lambda表达式的语法1 2 函数式接口 2 Lambda表达式的基本使用3 变量捕获3 1 匿名内部类的变量捕获3 2 Lambda的变量捕获 4 Lambda在集合当中的使用4 1 Collection接口4 2
  • docker学习笔记

    一 docker简介 xff1a 1 是什么 xff1a xff08 1 xff09 为什么会有docker出现 xff0c 将解决什么样的问题 xff1a 当我们在开发一个项目的时候 xff0c 假如您自己的电脑有您自己的开发环境 xff
  • iserver配置https加密通信

    1 升级iserver为https访问 xff1a iserver是部署在tomcat中 xff0c 所以只要配置tomcat的相关配置就可以 xff1a xff08 1 xff09 https访问需要用到证书 xff0c 因此需要准备相关
  • ZeroMQ发布订阅模式之多进程实现

    ZeroMQ的发布订阅模式是单向的数据发布 xff0c 服务器 xff08 即消息发布方 xff09 将更新的消息 事件推送到一组客户端 xff08 即订阅方 xff09 消息发布者创建ZMQ PUB类型的socket并将消息发送到消息队列
  • java面试清单和书籍推荐 五颗星五颗星

    前言 面试必备技能清单 xff0c 这里不会详细论述 xff0c 更多的是清单列举 xff0c 罗列一些关键字和链接注释 数据结构与算法 排序算法 选择排序冒泡排序插入排序快速排序快速排序 xff08 普通 xff0c 二路 xff0c 三
  • ssh Key exchange was not finished sshd

    报错 xff1a ssh Key exchange was not finished 则需修改sshd文件 链接 xff1a Key exchange was not finished connection is closed近期遇到这个错
  • C++类成员冒号初始化以及构造函数内赋值

    通常我们对类成员进行 初始化 有两种方式 xff1a 1 构造函数后面跟冒号 xff1b 2 构造函数里面对成员进行赋值 有些人不太注意这个小细节 xff0c 或者根本不知道他们的区别 xff0c 认为两种方式是一样的 这个误解有时可能会对
  • Web项目中pom.xml中<Project>爆红

    artifactId 39 with value 39 项目名 39 does not match a valid id pattern 主要是项目名中 lt artifactId gt 项目名 lt artifactId gt 项目名带空
  • 《自动化学报》踩坑心得

    LATEX使用于文本编辑器此次我是用的是latex安装方法是TeXLive 43 WinEdt 模板使用的是自动化学报模板 xff0c 使用的是中文模板 xff0c for paper in Chinese 文件 xff0c 打开之后选择打
  • 个人介绍以及课程期待

    本人朱杰 xff0c 现为北京理工大学大二学生 xff0c 主攻软件工程 xff0c 性格开朗 现在正在学习软件工程基础 xff0c 特写此文 xff0c 以明志 我希望能通过这门课能够更系统的了解软件工程 xff0c 之前对此的认知都是很
  • 向日葵提示‘’连接断开‘’解决方法(已解决非常好用)终端执行 xhost + 即可

    1 这个是授权访问 xff0c 一般输入xhost 43 即可 向日葵远程桌面提示连接断开解决方法 终端执行 xhost 43 即可 xhost 43 是使所有用户都能访问Xserver xhost 43 ip使ip上的用户能够访问Xser
  • 对vector使用指针

    include lt stdio h gt include lt iostream gt include lt vector gt using namespace std int main vector lt int gt a b c fo
  • 岁月划过生命线(我的2013-大二.上)

    岁月划过生命线 大二 上 又一次大清早被红马甲查赶出被窝 xff0c 让哥光着屁股就跑到隔壁宿舍去了 xff0c 真心恨死他们 这是一篇最早写于 2013 11 26 日的日志 xff0c 通过后来不断地增删改 xff0c 来总结 xff0
  • 带中文字库的12864LCD显示程序

    带中文字库的12864LCD显示程序 include lt reg52 H gt include lt intrins H gt define uchar unsigned char define uint unsigned int sbi
  • QML 自定义Legend(点击Legend隐藏/显示)

    QML ChartView中提供了默认的Legend xff0c 可对图例进行一些简单的例如颜色 字体等的设置 xff0c 但是当需要图例具有个性化的功能时 xff08 如单击时隐藏或显示 xff09 时 xff0c 就需要使用自定义的Le
  • Qt多线程中使用QTimer(常见问题汇总)

    我们经常需要将一些耗时的工作在子线程中进行 xff0c 同时在子线程中又需要用到循环事件时 xff0c 一种方法使用While sleep 进行线程控制 另一种创建一个QTimer对象 xff0c 使用信号与槽机制将信号timeout 与相
  • Qt 中使用 VLC-Qt 播放网络视频流(附实例)

    VLC Qt库 xff1a 一个在libVLC基础上结合了Qt框架的开源库 它提供了媒体播放的视频 音频处理控制的核心类 xff0c 并提供基于QWidget和QML的GUI框架 效果图 xff1a 官网地址 xff1a Quickly c
  • 微信小程序云开发处理微信支付成功的回调函数(云函数实现)

    在使用微信小程序开发微信支付功能时 xff0c 使用云开发中的微信支付云调用 xff0c 将商品信息 支付价格等信息传入云函数中 xff0c 并在返回的字段payment获取wx requestPayment接口所需要的所有信息 通过此方法