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.1 更新于2024-09-03 15:12
支付宝支付、生成订单、支付回调验签等。
插件基于alipay-sdk二次封装,获得 sdk 实例后,调用支付宝支付接口。
调用插件的时候需要用到标识,标识是唯一的,不能重复,建议使用英文,不要使用中文,对应插件 plugin.json
中的 key
字段
{
"appId": "应用ID",
"notifyUrl": "回调通知地址",
"privateKey": "应用私钥值",
"encryptKey": "AES密钥,调用AES加解密相关接口时需要",
"appCertContent": "应用公钥证书文件URL",
"alipayRootCertContent": "支付宝根证书文件URL",
"alipayPublicCertContent": "支付宝公钥证书文件URL",
"signType": "RSA2",
"charset": "utf-8",
"version": "1.0",
"keyType": "PKCS1"
}
下面是插件提供的一些方法
创建订单号,基于时间戳+唯一字符串+随机数+可选的子 ID
/**
* 生成订单号,基于时间戳+唯一字符串+随机数+可选的子ID
* @param subId 可选,如你的订单ID, 或者用户ID的一些组合
* @returns 订单号
*/
createOrderNum(subId?: string)
获得微信支付 SDK 实例
/**
* 获得微信支付SDK实例
* @param config 非必填 动态配置,有多个商户号或者多个应用的时候,可以动态配置
* @returns
*/
async getInstance(config?: {
// 应用ID
appId: string;
// 回调通知地址
notifyUrl: string;
// 应用私钥文件URL
privateKey: string;
// AES密钥,调用AES加解密相关接口时需要
encryptKey: string;
// 应用公钥证书文件路径
appCertPath: string;
// 支付宝根证书文件路径
alipayRootCertPath: string;
// 支付宝公钥证书文件路径
alipayPublicCertPath: string;
// 签名类型
signType: string;
// 字符集
charset: string;
// 版本
version: string;
// PKCS1
keyType: string;
})
通知验签
/**
* 通知验签
* @param postData {JSON} 服务端的消息内容
* @param raw {Boolean} 是否使用 raw 内容而非 decode 内容验签
* @param config {Object} 配置
* @returns {Boolean} 验签是否通过
*/
async signVerify(
postData: any,
raw?: boolean,
config?: {
// 应用ID
appId: string;
// 回调通知地址
notifyUrl: string;
// 应用私钥文件URL
privateKey: string;
// AES密钥,调用AES加解密相关接口时需要
encryptKey: string;
// 应用公钥证书文件路径
appCertPath: string;
// 支付宝根证书文件路径
alipayRootCertPath: string;
// 支付宝公钥证书文件路径
alipayPublicCertPath: string;
// 签名类型
signType: string;
// 字符集
charset: string;
// 版本
version: string;
// PKCS1
keyType: string;
}
)
@Inject()
pluginService: PluginService;
// 获得插件实例
const plugin = await this.pluginService.getInstance('pay-ali');
// 获得插件配置
const config = await plugin['getConfig']();
// 生成订单号
const orderNum = plugin['createOrderNum']();
// 获得支付SDK实例
const instance = await plugin.getInstance();
// 获得支付SDK实例,动态配置
const config = { }
const instance = await plugin.getInstance(config);
// 调用支付接口
const result = instance.pageExec("alipay.trade.page.pay", {
notify_url: config.notifyUrl,
bizContent: {
out_trade_no: orderNum,
total_amount: "0.01",
subject: "测试",
product_code: "FAST_INSTANT_TRADE_PAY",
body: "测试订单",
qr_pay_mode: "2",
},
});
console.log(result);
// 注意开放这个接口,不要做token验证
@Post('/aliNotify', { summary: '支付宝支付回调通知' })
async aliNotify(@Body() body) {
// 获得插件实例
const plugin = await this.pluginService.getInstance("pay-ali");
const check = await plugin.signVerify(body);
if (!check) {
return 'fail';
}else{
// 业务逻辑
}
return 'success';
}
v1.0.1 (2024-04-08)
v1.0.0 (2024-02-05)
写回复
回复(0)