基于微信云开发的商家转账至零钱
- 相关简介
- 开通功能
- 阅读文档
- 技术框架
- 配置环境
- 编写代码
- 注意事项
- 相关参考
相关简介
本篇文章主要介绍如何通过微信云开发的云函数实现商家转账到零钱。(让那些没有服务器的程序员也可以练练手)
开通功能
微信官方文档
-
本菜开发时开通条件是“连续正常交易30天且账户开通90天”,所有就连续30天转入自己账户小额金钱,幸好是去年开通的商户,所有90天是满足的。
-
满足条件后就可以在【商户平台】【产品中心】开通【商家转账到零钱】,按照要求配置就行。
-
此外还需要在【商户平台】【产品中心】开通【运营账号】,因为这些批量转账是通过运营账号发起的。
-
还需要将在【云开发控制台】【云函数】中点击需进行配置云函数的【版本与配置】【配置】【高级配置】【固定公网IP】,确定之后复制ip地址。
-
点击【产品中心】【商家转账到零钱】【产品设置】【设置IP白名单】即可。
阅读文档
产品介绍
准备工作
开发指引
API接口
相关插件
技术框架
采用wechatpay-axios-plugin这个插件完成Http的POST请求,并需要提前安装该插件的文档完成相关配置。
使用fs模块完成对证书、秘钥文件的读取。(需要将这两个文件放在这个云函数目录下)
配置环境
- 安装fs模块
npm install fs
- 安装wechatpay-axios-plugin模块
npm install wechatpay-axios-plugin
- 安装yargs模块
npm i yargs --no-save
编写代码
// 云函数入口文件
const fs = require('fs') // 文件读取模块
const cloud = require('wx-server-sdk')
const {Wechatpay, Formatter} = require('wechatpay-axios-plugin')
// 读取证书
const cert = fs.readFileSync('./apiclient_cert.pem', 'ascii')
const prikey = fs.readFileSync('./apiclient_key.pem', 'ascii')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {const wxpay = new Wechatpay({// 商户号mchid: '商户号',// 商户证书序列号serial: '商户证书序列号',// 商户API私钥 PEM格式的文本字符串或者文件bufferprivateKey: prikey,certs: {'插件生成的序列号': cert,},secret: '密钥',merchant: {cert: cert,key: prikey,},})console.log(wxpay)return wxpay.v3.transfer.batches.post({// mchid: "1604163157 ",appid: 'AppID',out_batch_no:"订单号",batch_name:"demo",batch_remark:'测试',total_amount:100,total_num:1,transfer_detail_list:[{out_detail_no:'x23zy427Bd5436',transfer_amount:100,transfer_remark:'测试',openid:'openID',}]}).then(res=>{console.log(res.data)return res}).catch(({response: {status, statusText, data}}) => console.error(status, statusText, data))
}
注意事项
- 若在微信开发工具终端执行代码遇到如下问题
说明需要配置一下:
- 首先使用管理员身份运行微信开发工具
- 打开终端
- 执行
Set-ExecutionPolicy Unrestricted
- 若提示验签失败,则需要检查相关信息是否正确。
- 若提示余额不足,则需要对【运营账户】进行充值。
相关参考
- 插件文档
- 官方文档
- 更改终端权限