Cool Admin(Java版)
后台管理系统开发、Api接口开发
Cool Admin(Java版)
后台管理系统开发、Api接口开发
Cool Admin(Node版)
后台管理系统开发、Api接口开发
Cool Admin(Vue版)
后台管理系统开发
Cool Uni
基于 uni-app 的跨端开发框架
技术指导
提供专业的技术指导服务
定制开发
外包,承接各类软件开发
低价云服务器
特价、低价的云服务器
发布帖子
寻求帮助或分享知识
发布插件
分享您的插件
Cool Admin(Java版)
Cool Admin(Node版)
Cool Admin(Vue版)
Cool Uni
技术指导
定制开发
低价云服务器
发布帖子
发布插件
微信支付
v1.0.3 更新于1天前
提供微信支付的相关功能,支付、下单、退款、生成订单号等。
基于wechatpay-node-v3二次封装,用法可以参照官方文档。
调用插件的时候需要用到标识,标识是唯一的,不能重复,建议使用英文,不要使用中文,对应插件 plugin.json
中的 key
字段
{
"appid": "直连商户申请的公众号或移动应用appid",
"mchid": "商户号",
"notify_url": "回调链接",
"publicKey": "公钥的文件的http地址或者文件路径",
"privateKey": "私钥的文件的http地址或者文件路径",
"verifyPublicKey": "可选,回调验签如果是公钥模式必填,证书的http地址或者文件路径",
"key": "微信商户 v3密钥"
}
文件路径可以这样配置,@baseDir/xxx,@baseDir 是特殊的关键字符, 表示项目根目录/src
verifyPublicKey
,2024 年 11 月 1 日起,新申请的微信商户回调通知改为公钥证书模式,此项必填
下面是插件提供的一些方法
创建订单号,基于时间戳+唯一字符串+随机数+可选的子 ID
/**
* 生成订单号,基于时间戳+唯一字符串+随机数+可选的子ID
* @param subId 可选,如你的订单ID, 或者用户ID的一些组合
* @returns 订单号
*/
createOrderNum(subId?: string)
获得微信支付 SDK 实例
/**
* 获得微信支付SDK实例
* @param config 动态配置,有多个商户号或者多个应用的时候,可以动态配置
* @returns
*/
async getInstance(config?: {
// 直连商户申请的公众号或移动应用appid。
appid: string;
// 商户号
mchid: string;
// APIv3密钥
key: string;
// 回调链接
notify_url: string;
// 公钥
publicKey: string;
// 私钥
privateKey: string;
})
验签,支付回调的时候需要验签
/**
* 验签
* @param ctx 请求上下文
* @param config 动态配置
* @returns 验签结果
*/
async signVerify(
ctx,
config?: {
// 直连商户申请的公众号或移动应用appid。
appid: string;
// 商户号
mchid: string;
// APIv3密钥
key: string;
// 回调链接
notify_url: string;
// 公钥
publicKey: string;
// 私钥
privateKey: string;
}
)
/**
* 获得插件配置
* @returns 配置
*/
async getConfig()
@Inject()
pluginService: PluginService;
@Inject()
ctx;
// 生成订单号
await this.pluginService.invoke('pay-wx', 'createOrderNum');
// 获得微信支付 SDK 实例
const instance = await this.pluginService.invoke('pay-wx', 'getInstance');
// 验签
await this.pluginService.invoke('pay-wx', 'signVerify', this.ctx);
// 获得配置
await this.pluginService.invoke('pay-wx', 'getConfig');
@Inject()
pluginService: PluginService;
// 获得插件实例
const plugin = await this.pluginService.getInstance('pay-wx');
// 获得插件配置
const config = await plugin['getConfig']();
// 生成订单号
const orderNum = plugin['createOrderNum']();
// 获得微信支付 SDK 实例
const instance = await plugin['getInstance']();
// Native,返回的信息可以直接生成二维码,用户扫码支付
const params = {
description: "测试",
out_trade_no: orderNum,
notify_url: config.notify_url,
amount: {
total: 1,
},
scene_info: {
payer_client_ip: "ip",
},
}
const result = await instance.transactions_native(params);
console.log(result);
// 注意开放这个接口,不要做token验证
@Post('/wxNotify', { summary: '微信支付回调' })
async wxNotify(@Body() body) {
// 获得插件实例
const plugin = await this.pluginService.getInstance('pay-wx');
// 获得微信支付 SDK 实例
const instance = await plugin.getInstance();
const { ciphertext, associated_data, nonce } = body.resource;
const data: any = instance.decipher_gcm(ciphertext, associated_data, nonce);
const check = await plugin.signVerify(this.ctx);
// 验签通过,处理业务逻辑
if (check && data.trade_state == 'SUCCESS') {
// 处理业务逻辑
console.log('支付成功');
}
return 'success';
}
返回数据
注:code_url 可以直接生成二维码,用户扫码支付
{
"status": 200,
"data": { "code_url": "weixin://wxpay/bizpayurl?pr=quEsDYOzz" }
}
v1.0.3 (2024-12-02)
v1.0.2 (2024-06-13)
v1.0.1 (2024-03-14)
v1.0.0 (2024-02-04)
写回复
回复(0)