Skip to content

Commit

Permalink
Merge pull request #11 from notadd/develop
Browse files Browse the repository at this point in the history
chore(release): publish v0.3.1
  • Loading branch information
dzzzzzy authored Dec 4, 2018
2 parents edb2f07 + c07b476 commit 27afd65
Show file tree
Hide file tree
Showing 27 changed files with 385 additions and 190 deletions.
73 changes: 66 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,29 +30,88 @@ import { PayAddon } from '@notadd/addon-pay';
export class ApplicationModule {}
```

### 使用 Wechat`XXX`PayService
### 微信支付

#### 使用 WeChat`XXX`PayService 调用 API

WeChat`XXX`PayService 类包含当前支付方式的支付、订单、退款相关 API,调用方式如下(扫码支付):

```typescript
import { Injectable, Inject } from '@nestjs/common';
import { WechatNativePayService, WechatTradeType } from '@notadd/addon-pay';
import { WeChatNativePayService, WeChatTradeType } from '@notadd/addon-pay';

@Injectable()
export class TestPay {
constructor(@Inject(WechatNativePayService) private readonly wechatNativePayService: WechatNativePayService) { }
constructor(@Inject(WeChatNativePayService) private readonly weChatNativePayService: WeChatNativePayService) { }

async nativePay() {
const ressult = await this.wechatNativePayService.pay({
const ressult = await this.weChatNativePayService.pay({
body: '支付一下',
out_trade_no: '201811271512000001',
total_fee: 301,
spbill_create_ip: '127.0.0.1',
notify_url: 'your.domain.com/wechat-pay/notify',
trade_type: WechatTradeType.JSAPI
spbill_create_ip: '127.0.0.1', // 支付请求方IP
notify_url: 'your.domain.com/payment/wechat_order_notify', // 服务端支付通知地址
trade_type: WeChatTradeType.JSAPI
});
}
}
```

#### 使用 WeChatNotifyParserUtil 解析支付/退款通知

```typescript
import { Controller, Inject, Post, Req } from '@nestjs/common';

import { WeChatNotifyParserUtil } from '@notadd/addon-pay';

@Controller('payment')
export class PaymentNotifyController {
constructor(
@Inject(WeChatNotifyParserUtil) private readonly weChatNotifyParserUtil: WeChatNotifyParserUtil
) { }

/**
* 微信支付统一下单通知路由
*
* @param req 通知请求
*/
@Post('wechat_order_notify')
async weChatOrderNotify(@Req() req) {
// 当 data 为 undefined 时,表示通知请求中的 sign 验签失败
const data = await this.weChatNotifyParserUtil.parsePayNotify(req);

// 失败时返回
if (!data) {
const errMsg = '验签失败'; // 可根据业务自定定义错误信息
return this.weChatNotifyParserUtil.generateFailMessage(errMsg);
}

// 成功时返回
return this.weChatNotifyParserUtil.generateSuccessMessage();
}

/**
* 微信支付退款通知路由
*
* @param req 通知请求
*/
@Post('wechat_refund_notify')
async weChatRefundNotify(@Req() req) {
// 当 data 为 undefined 时,表示通知请求中的 req_info 解密失败
const data = await this.weChatNotifyParserUtil.parseRefundNotify(req);

// 失败时返回
if (!data) {
const errMsg = '解密失败'; // 可根据业务自定定义错误信息
return this.weChatNotifyParserUtil.generateFailMessage(errMsg);
}

// 成功时返回
return this.weChatNotifyParserUtil.generateSuccessMessage();
}
}
```

## 贡献说明

我们欢迎 Nest.js 使用者来参与这个插件的开发,作为一个贡献者,请您遵循以下原则:
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "nt-addon-pay",
"version": "0.3.0",
"version": "0.3.1",
"description": "The pay addon for notadd application",
"scripts": {
"start": "ts-node -r tsconfig-paths/register starter/main.ts",
Expand Down Expand Up @@ -45,7 +45,7 @@
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverage": true,
"collectCoverage": false,
"collectCoverageFrom": [
"src/**/*.service.ts",
"!src/modules/wechat/services/base.service.ts"
Expand Down
4 changes: 2 additions & 2 deletions src/common/interfaces/addon.config.interface.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/** 微信支付初始化配置 */
interface PayAddonWechatConfig {
interface PayAddonWeChatConfig {
/** 公众账号APPID或应用APPID */
appid: string;
/** 微信支付商户号 */
Expand All @@ -22,7 +22,7 @@ interface PayAddonAliConfig {
/** 支付插件初始化配置 */
export interface PayAddonConfig {
/** 微信支付初始化配置 */
wechatConfig?: PayAddonWechatConfig;
wechatConfig?: PayAddonWeChatConfig;
/** 支付宝支付初始化配置 */
aliConfig?: PayAddonAliConfig;
}
2 changes: 1 addition & 1 deletion src/modules/wechat/constants/wechat.constant.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const WechatCertificateAgentProvider = 'WechatCertificateAgentProvider';
export const WeChatCertificateAgentProvider = 'WeChatCertificateAgentProvider';
2 changes: 1 addition & 1 deletion src/modules/wechat/enums/trade-type.enum.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/** 微信支付交易类型 */
export enum WechatTradeType {
export enum WeChatTradeType {
/** JSAPI、小程序支付 */
JSAPI = 'JSAPI',
/** 扫码支付 */
Expand Down
3 changes: 2 additions & 1 deletion src/modules/wechat/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ export * from './services/jsapi.pay.service';
export * from './services/micro.pay.service';
export * from './services/native.pay.service';
export * from './services/wap.pay.service';
export * from './enums/trade-type.enum';
export * from './enums/trade-type.enum';
export * from './utils/notify-parser.util';
2 changes: 1 addition & 1 deletion src/modules/wechat/interfaces/base.interface.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/** 微信支付接口基础返回结果 */
export interface WechatBaseResponse {
export interface WeChatBaseResponse {
/** 返回状态码 */
return_code: string;
/** 返回信息 */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/** 微信支付结果通知返回值 */
export interface WechatPayBaseNotifyRes {
export interface WeChatPayNotifyRes {
/** 返回状态码 */
return_code: string;
/** 返回信息 */
Expand Down Expand Up @@ -52,4 +52,46 @@ export interface WechatPayBaseNotifyRes {
attach?: string;
/** 支付完成时间 */
time_end: string;
}

/** 微信退款结果通知返回值 */
export interface WeChatRefundNotifyRes {
/** 返回状态码 */
return_code: string;
/** 返回信息 */
return_msg: string;
/** 公众账号ID */
appid: string;
/** 退款的商户号 */
mdc_id: string;
/** 随机字符串 */
nonce_str: string;
/** 加密信息 */
req_info: string;
/** 微信订单号 */
transaction_id: string;
/** 商户订单号 */
out_trade_no: string;
/** 微信退款单号 */
refund_id: string;
/** 商户退款单号 */
out_refund_no: string;
/** 订单金额 */
total_fee: number;
/** 应结订单金额 */
settlement_total_fee?: number;
/** 申请退款金额 */
refund_fee: number;
/** 退款金额 */
settlement_refund_fee: number;
/** 退款状态 */
refund_status: string;
/** 退款成功时间 */
success_time?: string;
/** 退款入账账户 */
refund_recv_account: string;
/** 退款资金来源 */
refund_account: string;
/** 退款发起来源 */
refund_request_source: string;
}
36 changes: 18 additions & 18 deletions src/modules/wechat/interfaces/order.interface.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { WechatTradeType } from '../enums/trade-type.enum';
import { WechatBaseResponse } from './base.interface';
import { WeChatTradeType } from '../enums/trade-type.enum';
import { WeChatBaseResponse } from './base.interface';

/** 微信支付下单接口基础请求参数 */
interface WechatBaseOrderRequestParam {
interface WeChatBaseOrderRequestParam {
/** 设备号 */
device_info?: string;
/** 商户订单号 */
Expand All @@ -15,7 +15,7 @@ interface WechatBaseOrderRequestParam {
attach?: string;
/** 订单金额,单位为分,只能为整数 */
total_fee: number;
/** 指定支付方式 */
/** 指定支付方式,上传此参数 no_credit --可限制用户不能使用信用卡支付 */
limit_pay?: string;
/** 终端IP */
spbill_create_ip: string;
Expand All @@ -30,29 +30,29 @@ interface WechatBaseOrderRequestParam {
}

/** 微信付款码支付下单接口请求参数 */
export interface WechatMicroPayOrderReqParam extends WechatBaseOrderRequestParam {
export interface WeChatMicroPayOrderReqParam extends WeChatBaseOrderRequestParam {
/** 授权码 */
auth_code: string;
}

/** 微信APP支付下单接口请求参数 */
export interface WechatAppPayOrderReqParam extends WechatBaseOrderRequestParam {
export interface WeChatAppPayOrderReqParam extends WeChatBaseOrderRequestParam {
/** 交易类型 */
trade_type: WechatTradeType;
trade_type: WeChatTradeType;
/** 通知地址 */
notify_url: string;
}

/** 微信扫码支付、JSAPI支付、H5支付、小程序支付下单接口请求参数 */
export interface WechatOtherPayOrderReqParam extends WechatAppPayOrderReqParam {
export interface WeChatOtherPayOrderReqParam extends WeChatAppPayOrderReqParam {
/** 商品ID,交易类型为NATIVE(扫码支付)时必传 */
product_id?: string;
/** 用户标识 */
openid?: string;
}

/** 微信付款码支付下单接口返回结果 */
export interface WechatMicroPayOrderRes extends WechatBaseResponse {
export interface WeChatMicroPayOrderRes extends WeChatBaseResponse {
/** 用户标识 */
openid: string;
/** 是否关注公众账号,Y-关注,N-未关注 */
Expand Down Expand Up @@ -86,35 +86,35 @@ export interface WechatMicroPayOrderRes extends WechatBaseResponse {
}

/** 微信APP支付下单接口返回结果 */
export interface WechatAppPayOrderRes extends WechatBaseResponse {
export interface WeChatAppPayOrderRes extends WeChatBaseResponse {
/** 交易类型 */
trade_type: string;
/** 预支付交易会话标识 */
prepay_id: string;
}

/** 微信H5支付下单接口返回结果 */
export interface WechatWapPayOrderRes extends WechatAppPayOrderRes {
export interface WeChatWapPayOrderRes extends WeChatAppPayOrderRes {
/** 支付跳转链接,有效期为5分钟 */
mweb_url: string;
}

/** 微信扫码支付、JSAPI支付、小程序支付下单接口返回结果 */
export interface WechatOtherPayOrderRes extends WechatAppPayOrderRes {
export interface WeChatOtherPayOrderRes extends WeChatAppPayOrderRes {
/** 二维码连接 */
code_url?: string;
}

/** 微信支付查询订单接口基础请求参数 */
export interface WechatBaseQueryOrderReqParam {
export interface WeChatBaseQueryOrderReqParam {
/** 微信订单号,优先使用 */
transaction_id?: string;
/** 商户订单号 */
out_trade_no?: string;
}

/** 微信支付查询订单接口基础返回结果 */
export interface WechatBaseQueryOrderRes extends WechatBaseResponse {
export interface WeChatBaseQueryOrderRes extends WeChatBaseResponse {
/** 设备号 */
device_info?: string;
/** 用户标识 */
Expand Down Expand Up @@ -154,24 +154,24 @@ export interface WechatBaseQueryOrderRes extends WechatBaseResponse {
}

/** 微信支付关闭订单接口基础请求参数 */
export interface WechatBaseCloseOrderReqParam {
export interface WeChatBaseCloseOrderReqParam {
/** 商户订单号 */
out_trade_no: string;
}

/** 微信支付关闭订单接口基础返回结果 */
export interface WechatBaseCloseOrderRes extends WechatBaseResponse { }
export interface WeChatBaseCloseOrderRes extends WeChatBaseResponse { }

/** 微信支付撤销订单接口基础请求参数 */
export interface WechatMicroPayReverseOrderReqParam {
export interface WeChatMicroPayReverseOrderReqParam {
/** 商户订单号 */
out_trade_no: string;
/** 微信订单号,优先使用 */
transaction_id?: string;
}

/** 微信支付撤销订单接口基础返回结果 */
export interface WechatMicroPayReverseOrderRes extends WechatBaseResponse {
export interface WeChatMicroPayReverseOrderRes extends WeChatBaseResponse {
/** 是否重调,是否需要继续调用撤销,Y-需要,N-不需要 */
recall: string;
}
10 changes: 5 additions & 5 deletions src/modules/wechat/interfaces/refund.interface.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { WechatBaseResponse } from './base.interface';
import { WeChatBaseResponse } from './base.interface';

/** 微信支付申请退款接口基础请求参数 */
export interface WechatBaseRefundReqParam {
export interface WeChatBaseRefundReqParam {
/** 微信订单号,优先使用 */
transaction_id?: string;
/** 商户订单号 */
Expand Down Expand Up @@ -29,7 +29,7 @@ export interface WechatBaseRefundReqParam {
}

/** 微信支付申请退款接口基础返回结果 */
export interface WechatBaseRefundRes extends WechatBaseResponse {
export interface WeChatBaseRefundRes extends WeChatBaseResponse {
/** 微信订单号 */
transaction_id: string;
/** 商户订单号 */
Expand Down Expand Up @@ -61,7 +61,7 @@ export interface WechatBaseRefundRes extends WechatBaseResponse {
}

/** 微信支付查询退款接口基础请求参数 */
export interface WechatBaseQueryRefundReqParam {
export interface WeChatBaseQueryRefundReqParam {
/** 微信退款单号,优先级1 */
refund_id?: string;
/** 商户退款单号,优先级2 */
Expand All @@ -79,7 +79,7 @@ export interface WechatBaseQueryRefundReqParam {
}

/** 微信支付查询退款接口基础返回结果 */
export interface WechatBaseQueryRefundRes extends WechatBaseResponse {
export interface WeChatBaseQueryRefundRes extends WeChatBaseResponse {
/** 微信订单号 */
transaction_id: string;
/** 商户订单号 */
Expand Down
2 changes: 1 addition & 1 deletion src/modules/wechat/interfaces/sandbox.interface.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export interface WechatSandboxResponse {
export interface WeChatSandboxResponse {
/** 返回状态码 */
return_code: string;
/** 返回信息 */
Expand Down
Loading

0 comments on commit 27afd65

Please sign in to comment.