微信小程序云开发微信支付、订单查询、申请退款
微信小程序云开发微信支付
- 使用云开发微信支付功能的前提
- 统一下单
- 查询订单
- 申请退款
- 常见问题总结:
使用云开发微信支付功能的前提
- 小程序主体为企业或者工商个体户
- 小程序完成了微信认证
- 小程序接入微信支付
微信官方文档-小程序之微信支付 必看!!!
假设一切条件已经布置好,我们正是进入开发者工具操作
- 创建小程序(使用云开发)
- 部署云环境
- 在控制台中设置微信支付参数
注意:如果要使用云开发实现申请退款,则授权API退款的申请是必备的。
附上授权同意的微信商户平台链接,该地址实在难找,本人找了一天一夜,有点想故意隐藏的功能了
授权地址
统一下单
此功能在小程序文档中有较为仔细的说明,甚至官方也贴上了代码,那我也不多说,先创建云函数,并取名为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" : "吃键盘的侠客",//商品名称货商品描述"outTradeNo" : "1217752501201407033233368018",//订单号-唯一性"spbillCreateIp" : "127.0.0.1",//回调IP地址,如果没有就这样随意放"subMchId" : "1900009231",//微信支付商户号"totalFee" : 1,//支付金额 单位分"envId": "test-f0b102",//云开发环境"functionName": "pay_cb",//回调云函数--没有可以乱填})return res
}
接着为页面编写一个按钮button
我就一次写了三个按钮:统一支付
、订单查询
、申请退款
小程序端代码
/*** 页面的初始数据*/data: {timeStamp: "",//存放支付单号tk:"" //存放退款单号},//支付paygo() {var timeStamp = "1999" + new Date().getTime()//这里使用时间戳精确到毫秒的方式保证单号的唯一性,前面的1999也是为了保证唯一性的确保 console.log(timeStamp)this.setData({timeStamp: timeStamp})wx.cloud.callFunction({name: 'pay',//函数名data: {orderid: timeStamp,//传递单号},success: res => {console.log("获取支付参数成功", res)const payment = res.result.payment//调起支付wx.requestPayment({...payment,success(res) {console.log('支付成功', res)},fail(res) {console.error('支付失败', res)}})},fail: res => {console.log("获取支付参数失败", res)},})},
效果图:
这就是一个坑,所以我们需要特殊加一个查询订单处理
查询订单
先创建云函数,并取名为queryOrder
代码非常少
// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({env: 'yuelnn-corporation-vu94n'
})exports.main = async (event, context) => {const res = await cloud.cloudPay.queryOrder({"out_trade_no" :event.trade,//商户订单号"nonce_str" : "" +new Date().getTime(),//随机字符串,这里也是采用时间戳精确到毫秒,人家要我们传随机字符串,我们就这么给他一个吧"sub_mch_id" : "1562576291",//子商户号,也就是商户号啦,没区别的})return res
}
小程序端:
//订单查询queryOrder() {wx.cloud.callFunction({name: 'queryOrder',data: {trade: this.data.timeStamp//订单号,就是刚才支付的时候我们自己生成的订单号,注意联系上下文理解},success: res => {console.log("获取查询参数成功", res)},fail: res => {console.log("获取查询参数失败", res)},})},
效果图:
如需要知道更多字段所表示的意思请移步官方文档,我猜你们也用不到
申请退款
在贴代码前,我再强调一次,申请退款必须在控制台中的设置,全局变量里获得了退款API权限
怎么做我在文中都有说到,over
假设你已经授权了,那我们开始吧
先创建云函数,并取名为refund
这里出现了一个新的字段out_refund_no
,咱们不看文档了,直接听我的解释,就是跟支付的时候一样生成一个唯一的单号(都是咱们自己生成的,我都是采用时间戳来保证唯一),这里的out_refund_no
就是退款单号,这个(out_refund_no
)退款单号对应你所申请退款时候的一个金额,假设我的数值
“out_refund_no” : “49459462659895”,//商户退款单号唯一的
“out_trade_no” : 5456454356565,//商户订单号,刚才支付时候的对应那笔单号
“nonce_str” : “”+new Date().getTime(),//随机字符串
“sub_mch_id” : “xxxxxxxxx”,//子商户号
“total_fee” : 100,//订单金额
“refund_fee”: 50,//申请退款金额
从上数值可以发现,我申请退款的金额可以小于所支付的总金额,也就体现了分批退款的可行性
那么那次退款单号就代表了当退款的信息ID,可以通过查询订单查询到退款信息。额…可能我讲的也不乍地,那大家还是look a look 文档吧
贴代码:
// 云函数代码
//申请退款
const cloud = require('wx-server-sdk')
cloud.init({env: 'yuelnn-corporation-vu94n'
})exports.main = async (event, context) => {const res = await cloud.cloudPay.refund({"out_refund_no" : event.refund,//商户退款单号"out_trade_no" : event.trade,//商户订单号"nonce_str" : ""+new Date().getTime(),//随机字符串"sub_mch_id" : "1562576291",//子商户号"total_fee" : 1,//订单金额"refund_fee": 1,//申请退款金额 })return res
}
小程序端:
//退款refund() {var tk = "T1999" + new Date().getTime()this.setData({tk:tk})console.log("退款单号",tk)wx.cloud.callFunction({name: 'refund',data: {refund: tk ,//商户退款单号trade: this.data.timeStamp,//商户订单号},success: res => {console.log("获取退款参数成功", res)},fail: res => {console.log("获取退款参数失败", res)},})},
效果图:
马上退款到账的,非常快。
常见问题总结:
- 没有填写正确商户号
- 字段的
string
和int
搞错,会报参数格式错误 - 退款API没授权也去搞云开发退款、
- 长得没我好看
- 不会还不加我微信的:
bybilibili
微信小程序云开发微信支付、订单查询、申请退款相关推荐
- 关于微信小程序云开发数据库中有数据查询不到的问题
最近在学习过程中遇到一个微信小程序云开发数据库中有数据查询不到的问题 集合查询代码如下: Page({/* 采用了ES6的写法 */onLoad() {wx.cloud.database().coll ...
- 微信小程序云开发-微信小程序账号申请及新手环境配置
申请一个微信小程序账号 在微信开发时,我们yx时候可能需要用到微信小程序,微信小程序云开发需要使用注册的小程序appid,测试和游客进入是没有云开发的功能,所以我们需要注册一个微信小程序账号.在注册账 ...
- 微信小程序云开发学习
1.参考视频教程:微信小程序云开发基础到实战 云数据库 云函数 云存储 云调用[新视觉]_哔哩哔哩_bilibili 2.参考笔记: 本来想自己做一份笔记的,后来发现已经有人做了份非常不错的笔记了,再 ...
- 微信小程序云开发 初学者入门教程二
微信小程序云开发 初学者入门教程二-前端操作数据库模块 如何操作数据库,作为一名前端,如果对数据的知识不够熟悉也没关系,从现在开始好好学习就行,数据库的操作内容差不多涉及增删改查四大模块,花一些业余的 ...
- 关于微信小程序云开发,申请退款接口返回“订单不存在”的问题
关于微信小程序云开发,申请退款接口返回"订单不存在"的问题 微信支付的退款接口返回"订单不存在",有可能是因为传入的商户订单号或微信订单号有误,但本文要讲的是关 ...
- 校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程
校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程 完整代码下载地址:校园二手书商城源代码基于微信小程序云开发 欢迎使用,下面是配置教程 长话短说,下面直接说配置流程 一.小程序 ...
- 【系】微信小程序云开发实战坚果商城-前后端交互之订单实现
第 4-7 课:前后端交互之订单实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...
- 【系】微信小程序云开发实战坚果商城-前端之订单实现
第 2-7 课:前端之订单实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系] ...
- 【系】微信小程序云开发实战坚果商城-云开发之订单品数据实现
第 3-9 课:云开发之订单品数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...
最新文章
- 华清远见智能家居ppt_怀揣梦想,一路前行——西安华清与西安培华实训集
- Linux中默认的JDK版本设置
- 当鼠标滑过文本框自动选中输入框内容JS代码
- 搭建 LEGO EV3 的 PyCharm Python 开发环境
- android 二次绘制 layout,View的三次measure,两次layout和一次draw
- arm linux 蜂鸣器qt,Qt 程序中使用蜂鸣器 ioctl()
- 分区表理论解析(下):SQL Server 2k52k8系列(二)
- Codeforces Round #498 (Div. 3) - 赛后补题
- Windows Internet Explorer 8 简体中文正式版发布!
- android ble 经典蓝牙,Android 经典蓝牙(Classic Bluetooth)和低功耗蓝牙(BLE)
- Alink、Tensorflow on Flink 在京东的应用
- 防止重复提交表单的两种方法
- 单片机原理及应用复习
- 西北工业大学计算机专业课考什么,西北工业大学西工大计算机考研经验
- 计算机操作系统有哪几个管理功能,操作系统管理功能有哪几种
- iOS修复字符串中 有\n 不换行的问题
- 一页纸说清楚“什么是深度学习?”
- 什么是正则化?他是如何起作用的?
- 在服务器上安装Linux系统
- 梦幻柔焦(奥顿效果)
热门文章
- mysql 查询多个号段_数据库中如何使用SQL查询连续号码段(转载)
- 安装 | 企业版CDH服务器集群配置(详细)
- [19保研]关于上海交通大学“2019 软件工程优才夏令营”的通知
- php拼多多api接口,拼多多API
- Android usb网络共享开关
- Charles--breakpoint
- FL studio 20简易入门教程 -- 第一篇 -- 软件介绍与初始化
- python作排产计划表_排产计划表.doc
- 从WiMAX到LTE:不同宽带无线接入技术殊途同归zz
- [计算机组成原理] 什么是最高位和次高位进位