1.0.7 • Published 1 year ago
zhiji-fuyoupay v1.0.7
npm i zhiji-fuyoupay/src/configuration.ts
import * as fuyou from 'zhiji-fuyoupay';
@Configuration({
imports: [
fuyou
],
})配置 config
{
"fuyou": {
"publicKey": "string", //富友公钥
"privateKey": "string", //私钥
"url": "string", //请求 url
"mchnt_cd": "string", //商户号
"appid": "可选|string", //下单时优先使用传入的appid 小程序 appid
"refund": "string" //退款请求 url
}
}FuyouService 文档
概述
FuyouService 类是一个用于与富友支付网关交互的 Node.js 服务。它提供了下单、处理退款和处理富友系统回调的方法。该服务使用 RSA 加密进行安全通信,并使用 Axios 进行 HTTP 请求。
依赖
该服务依赖以下外部库:
@midwayjs/core: 提供依赖注入和配置的装饰器。@midwayjs/axios: 用于进行 HTTP 请求。moment: 一个用于日期操作的库。node-rsa: 一个用于 RSA 加密和解密的库。iconv-lite: 一个用于字符编码转换的库。
接口
refundResponseDTO
interface refundResponseDTO {
refund_fas_ssn: string;
refund_amt: string | number;
pay_order_id: string;
mchnt_cd: string;
refund_order_id: string;
refund_order_date: string;
pay_order_date: string;
refund_fas_date: string;
refund_st: string;
}placeOrderDTO
interface placeOrderDTO {
order_amt: number | string;
openid?: string;
appid?: string;
order_id: string;
notify_url: string;
goods_name: string;
goods_detail: string;
order_pay_type?: string;
order_date: string;
}refundDTO
interface refundDTO {
order_id: string;
order_date: string;
refund_amt: number | string; //退款金额
refund_order_id: string; //退货单号
}类: FuyouService
属性
fuyou: 富友的配置对象,通过@Config('fuyou')注入。axios:HttpService的实例,通过@Inject()注入。logger:ILogger的实例,通过@Inject()注入。
方法
request
async request(url: string, param: any, HOST: string = this.fuyou.url): Promise<any>发送请求到富友 API。
参数:
url: 接口 URL。param: 请求参数。HOST: 主机 URL(默认为this.fuyou.url)。
返回: 富友 API 的解密响应。
抛出: 如果请求失败或响应代码不是 '0000',则抛出错误。
decrypt
decrypt(data: string): any使用商户的私钥解密给定的字符串。
参数:
data: 加密的数据。
返回: 解密后的 JSON 对象。
placeOrder
async placeOrder(data: placeOrderDTO): Promise<any>在富友支付网关下单。
参数:
data: 订单详情。
返回: 富友 API 的响应。
refund
async refund(data: refundDTO): Promise<refundResponseDTO>处理退款请求。
参数:
data: 退款详情。
返回: 富友 API 的响应,类型为
refundResponseDTO。
fuyouCallback
async fuyouCallback(data: any): Promise<any>处理来自富友系统的回调。
参数:
data: 回调数据。
返回: 解密后的回调消息。
示例用法
配置
确保在应用配置文件中提供富友配置:
{
"fuyou": {
"url": "https://api.fuyou.com",
"publicKey": "YOUR_PUBLIC_KEY",
"privateKey": "YOUR_PRIVATE_KEY",
"mchnt_cd": "YOUR_MERCHANT_CODE",
"appid": "YOUR_APP_ID",
"refund": "https://refund.fuyou.com"
}
}下单
const orderData: placeOrderDTO = {
order_amt: 100,
order_id: 'ORDER12345',
notify_url: 'https://yourdomain.com/notify',
goods_name: 'Product Name',
goods_detail: 'Product Details',
order_date: moment().format('YYYYMMDD'),
};
const fuyouService = new FuyouService();
const orderResponse = await fuyouService.placeOrder(orderData);
console.log(orderResponse);处理退款
const refundData: refundDTO = {
order_id: 'ORDER12345',
order_date: '20240624',
refund_amt: 50,
refund_order_id: 'REFUND12345',
};
const refundResponse = await fuyouService.refund(refundData);
console.log(refundResponse);处理回调
const callbackData = {
message: 'ENCRYPTED_MESSAGE',
};
const callbackResponse = await fuyouService.fuyouCallback(callbackData);
console.log(callbackResponse);结论
FuyouService 类提供了一个与富友支付网关交互的强大接口,能够安全地处理下单、退款和回调。确保正确设置配置,并安全地处理密钥等敏感信息。