更新记录

1(2024-10-17) 下载此版本

自己弄几天摸索的,分享给大家


平台兼容性

阿里云 腾讯云 支付宝云
× ×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


零钱通提现 需要用材料 必须是公司营业执照,已经在微信商户开通零钱通 产品

第一步打开项目1729152964441

第二步 根据微信商户填写信息

openid 是小程序登录后获取的 openid

1729153006448

第三步 apiclient_cert.pem,apiclient_key.pem 一定弄成自己的

1729153910324

第四步 在微信商户 零钱通 配置 阿里云 IP,

如果用阿里云 就用阿里云,不用阿里云

1729153116730

第无步 配置免额度 (为了提现时候不用审核了)

代码演示

'use strict';
const db = uniCloud.database()

// 云函数入口文件
let mchid = '' //微信商户号
// 证书序列号
let num = '';
//小程序appid
let appid='';
//v3的密钥
let api_key='';

const fs = require('fs') // 文件读取模块
const path = require('path'); // 引入内置的path模块
const crypto = require('crypto');
exports.main = async (event, context) => {

let out_batch_no="TD"+new Date().getTime();
//提现参数
let moneyVal=0.1;
let time=new Date().toLocaleTimeString();
let param = {
    appid,
    out_batch_no, //商家批次单号
    batch_name: time + "商品分销提现",
    batch_remark: time + "商品分销提现",
    total_amount: Number(moneyVal) * 100, // 转账金额
    total_num: 1,
    transfer_scene_id: "1001",
    transfer_detail_list: [
      {
        out_detail_no:out_batch_no,
        transfer_amount: Number(moneyVal) * 100, // 转账金额
        transfer_remark: time + "商品分销提现",
        openid:'',
      },
    ],
};
const body = JSON.stringify(param); //请求体数据,如果有的话

// 读取证书
const cert = fs.readFileSync(path.resolve(__dirname, 'cert/apiclient_cert.pem'))
const prikey = fs.readFileSync(path.resolve(__dirname, 'cert/apiclient_key.pem'))

let chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
let maxPos = chars.length;
let character = '';
for (let i = 0; i < 32; i++) {
    character += chars.charAt(Math.floor(Math.random() * maxPos))
}

// 获取签名

const timestamp = Math.floor(Date.now() / 1000);
const nonceStr = character; // 替换成随机字符串
const method = 'POST'; // 请求方法
const path2 = '/v3/transfer/batches'; // 请求路径

const serialNo = num; // 商户证书序列号

// 构建待签名字符串
const message = `${method}\n${path2}\n${timestamp}\n${nonceStr}\n${body}\n`;

// 使用商户私钥进行签名
const sign = crypto
    .createSign('sha256')
    .update(message)
    .sign(prikey, 'base64');

// 创建 Authorization 头部
const authorization =
    `WECHATPAY2-SHA256-RSA2048 mchid="${mchid}",serial_no="${serialNo}",nonce_str="${nonceStr}",timestamp="${timestamp}",signature="${sign}"`;
const headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'user-agent': encodeURIComponent('商品分销提现'),
    'Wechatpay-Serial': num,
    "Authorization": authorization
};

let data = {
    cert_sn: cert,
    mch_id: mchid,
    api_key// v3密钥
};
const batchesRes = await uniCloud.httpProxyForEip.post('https://api.mch.weixin.qq.com/v3/transfer/batches',body,headers);
console.log(batchesRes);
return batchesRes;

};

注意 如果运行报错 看看是否需要安装 crypto 模块,参数是否错误

微信商户零钱通

https://pay.weixin.qq.com/docs/merchant/products/batch-transfer-to-balance/apilist.html

阿里云代理服务IP配置,已经发送请求方法

https://doc.dcloud.net.cn/uniCloud/cf-functions.html#aliyun-eip

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问