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 类提供了一个与富友支付网关交互的强大接口,能够安全地处理下单、退款和回调。确保正确设置配置,并安全地处理密钥等敏感信息。