1.0.7 • Published 1 year ago

zhiji-fuyoupay v1.0.7

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

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago