uin-pay版本 "version": "2.4.2",
在用vk框架中,写了一个云函数,主要功能是后台审核通过后, 商户向微信用户转账奖金。
Error: request fail:无可用的平台证书,请在商户平台-API安全申请使用微信支付公钥。
main: async (event) => {
let { data = {}, userInfo, util, filterResponse, originalParam } = event;
let { customUtil, uniID, config, pubFun, vk, db, _, $ } = util;
let { uid } = data;
let res = { code: 0, msg: "" };
// 业务逻辑开始-----------------------------------------------------------
let unipayIns = util.uniPay.initWeixinV3(config['uni-pay'].wxpay.app);
let out_bill_no= '2ab07867116d4bf9b692435e1735ea53';
let transferRes = await unipayIns.request({
method: "POST",
// 阿里云空间需要设置为true
useEipProxy: true,//false,
url: "/v3/fund-app/mch-transfer/transfer-bills",
data: {
appid: config['uni-pay'].wxpay.app.appId,
out_bill_no: out_bill_no,
openid:"obuDW64WJIRvagZUtzKDez_Z_mVY",//'user-openid',
transfer_amount: 10,//以分为单位
transfer_remark: "转账测试",
transfer_scene_id: "1000",
user_recv_perception: "现金奖励",
transfer_scene_report_infos: [{
info_type: "活动名称",
info_content: "新会员有礼"
},
{
info_type: "奖励说明",
info_content: "注册会员抽奖一等奖"
}
]
}
});
// 业务逻辑结束-----------------------------------------------------------
return res;
}
}
配置如下:
{
"appId": "wx1d0cf7073520ade4",
"secret": "36114ea32178230b3df497fbd7a5fd4e",
"mchId": "1712229422",
"key": "e148f986ed5384717dda57fdf0de11ad",
"pfx": Buffer(2774),
"v3Key": "e048f986ed5384717dda57fdf1de11ad",
"appCertPath": "D:\\project\\wechat-online\\wxClient3\\uni_modules\\uni-config-center\\uniCloud\\cloudfunctions\\common\\uni-config-center\\uni-pay\\wxpay\\apiclient_cert.pem",
"appPrivateKeyPath": "D:\\project\\wechat-online\\wxClient3\\uni_modules\\uni-config-center\\uniCloud\\cloudfunctions\\common\\uni-config-center\\uni-pay\\wxpay\\apiclient_key.pem",
"wxpayPublicKeyPath": "D:\\project\\wechat-online\\wxClient3\\uni_modules\\uni-config-center\\uniCloud\\cloudfunctions\\common\\uni-config-center\\uni-pay\\wxpay\\pub_key.pem",
"wxpayPublicKeyId": "PUB_KEY_ID_0117024494022024122000395111111888",
"version": 3
}
1 个回复
Ask小助手 - Ask社区AI助手
根据知识库中的相关信息,你遇到的"无可用的平台证书"错误是因为微信支付新商户默认使用微信支付公钥模式,不再使用传统的平台证书模式。
解决方案
1. 确认商户平台已开通微信支付公钥
登录微信支付商户平台,在 API安全 中申请开通微信支付公钥功能。新开通的商户号通常默认使用公钥模式,而非平台证书模式。
2. 检查公钥配置参数
你的配置中已经包含了
wxpayPublicKeyPath和wxpayPublicKeyId,但需要确保:PUB_KEY_ID_开头(如:PUB_KEY_ID_0117024494022024122000395111111888)3. 云函数中的路径处理
在云函数环境中,文件路径需要特别注意。建议修改配置为:
确保
pub_key.pem(微信支付公钥证书)已正确上传到uni-config-center/uni-pay/wxpay/目录。4. 升级 uni-pay 插件
根据 DCloud问答_208874,确保你使用的是支持微信支付公钥的最新版 uni-pay。如果版本较旧,可能不支持公钥模式。
5. 验证证书内容
确保证书文件内容格式正确:
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE----------BEGIN PRIVATE KEY-----等标记(如果作为字符串传入)如果配置后仍然报错,建议检查云函数运行日志,确认证书文件是否被正确加载。也可以参考插件市场 微信商户提现到零钱通uniCloud版 的实现方式,该插件提供了完整的 V3 转账示例代码。
要回复问题请先登录或注册
公告
更多>相关问题