|
@@ -31,6 +31,12 @@ export class OpenApiWebhookService extends BaseService {
|
|
|
logger: ILogger;
|
|
|
|
|
|
async easypayWebhook(params, type: string) {
|
|
|
+ if (type !== 'webhook_notification') {
|
|
|
+ this.ctx.status = 400;
|
|
|
+ this.ctx.body = {};
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ await this.waitByTime(2200);
|
|
|
try {
|
|
|
this.logger.info(
|
|
|
`easypay的webhook_${type}: params${JSON.stringify(params)}`
|
|
@@ -48,14 +54,139 @@ export class OpenApiWebhookService extends BaseService {
|
|
|
// 收单支付成功通知 acquiring_payment_success
|
|
|
// 收单支付成功通知 acquiring_refund_success
|
|
|
// 收单退款失败通知 acquiring_refund_failed
|
|
|
- // 入账成功 deposit_success
|
|
|
- // 换汇成功 exchange_success
|
|
|
// 换汇失败 exchange_failed
|
|
|
- // 付款成功 payment_success
|
|
|
// 付款失败 payment_failed
|
|
|
// 付款银行退回 payment_refunded
|
|
|
- // 转账成功 transfer_success
|
|
|
// 转账失败 transfer_failed
|
|
|
+
|
|
|
+ // const {type} = params
|
|
|
+ switch (params.type) {
|
|
|
+ case 'deposit_success':
|
|
|
+ // 入账成功 deposit_success
|
|
|
+ // 如果入账成功,则收取手续费
|
|
|
+ /*
|
|
|
+ {
|
|
|
+ "type": "deposit_success",
|
|
|
+ "data": {
|
|
|
+ "id": "29091e03092c42a681f0921118925e84",
|
|
|
+ "bank_account_id": "262874c798b1452682acd96fb0317bae",
|
|
|
+ "order_no": "20250310155503589841",
|
|
|
+ "account_id": "2bd64372841a54bf8b41f879ff07884b",
|
|
|
+ "bic_number": null,
|
|
|
+ "account_number": "79765000155",
|
|
|
+ "inward_amount": 1000,
|
|
|
+ "fee": 0,
|
|
|
+ "amount": 1000,
|
|
|
+ "currency": "GBP",
|
|
|
+ "payer": "付款信息 格式:{sender.name};{sender.address};{sender.country};{sender.account_number} or {sender.iban};{sender.bic};{sender.routing_code};附言",
|
|
|
+ "comment": "附言",
|
|
|
+ "payment_type": "SWIFT",
|
|
|
+ "order_type": "DEPOSIT",
|
|
|
+ "payment_id": null,
|
|
|
+ "clearing_system": null,
|
|
|
+ "status": "SUCCESS",
|
|
|
+ "create_time": "2025-03-10T15:55:04+08:00",
|
|
|
+ "update_time": "2025-03-10T15:55:04+08:00",
|
|
|
+ "completed_time": "2025-03-10T15:55:03+08:00"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+ break;
|
|
|
+ case 'exchange_success':
|
|
|
+ // 换汇成功 exchange_success
|
|
|
+ // 如果换汇成功,则收取手续费
|
|
|
+ /*
|
|
|
+ params
|
|
|
+ {
|
|
|
+ "type": "exchange_success",
|
|
|
+ "data": {
|
|
|
+ "id": "13ea4d84b92a4070b55dfafadcafcca3",
|
|
|
+ "order_no": "20250310161942842514",
|
|
|
+ "request_id": null,
|
|
|
+ "reference": null,
|
|
|
+ "account_id": "2bd64372841a54bf8b41f879ff07884b",
|
|
|
+ "sell_currency": "USD",
|
|
|
+ "sell_amount": 2577,
|
|
|
+ "exchange_rate": 0.776169,
|
|
|
+ "buy_amount": 2000,
|
|
|
+ "buy_currency": "GBP",
|
|
|
+ "reason": null,
|
|
|
+ "create_time": "2025-03-10T16:19:42+08:00",
|
|
|
+ "update_time": "2025-03-10T16:20:11+08:00",
|
|
|
+ "completed_time": "2025-03-10T16:20:11+08:00",
|
|
|
+ "status": "SUCCESS",
|
|
|
+ "details_url": null,
|
|
|
+ "detail_status": null,
|
|
|
+ "details_reason": [
|
|
|
+
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+ break;
|
|
|
+ case 'payment_success':
|
|
|
+ // 付款成功 payment_success
|
|
|
+ // 如果付款成功,则收取手续费
|
|
|
+ /*
|
|
|
+ params
|
|
|
+ {
|
|
|
+ "type": "string",
|
|
|
+ "data": {
|
|
|
+ "id": "string",
|
|
|
+ "order_no": "string",
|
|
|
+ "request_id": "string",
|
|
|
+ "reference": "string",
|
|
|
+ "account_id": "string",
|
|
|
+ "currency": "string",
|
|
|
+ "amount": 0,
|
|
|
+ "payer": {},
|
|
|
+ "beneficiary": {},
|
|
|
+ "exchange_rate": 0,
|
|
|
+ "fee": 0,
|
|
|
+ "fee_currency": "string",
|
|
|
+ "outward_currency": "string",
|
|
|
+ "outward_amount": 0,
|
|
|
+ "comment": "string",
|
|
|
+ "purpose": "string",
|
|
|
+ "status": "PENDING",
|
|
|
+ "reason": "string",
|
|
|
+ "source_of_funds ": "INVESTMENT",
|
|
|
+ "create_time": "string",
|
|
|
+ "update_time": "string",
|
|
|
+ "completed_time": "string"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+ break;
|
|
|
+ case 'transfer_success':
|
|
|
+ // 转账成功 transfer_success
|
|
|
+ // 如果付款成功,则收取手续费
|
|
|
+ /*
|
|
|
+ params
|
|
|
+ {
|
|
|
+ "type": "string",
|
|
|
+ "data": {
|
|
|
+ "id": "string",
|
|
|
+ "order_no": "string",
|
|
|
+ "request_id": "string",
|
|
|
+ "reference": "string",
|
|
|
+ "from_account_id": "string",
|
|
|
+ "to_account_id": "string",
|
|
|
+ "amount": 0,
|
|
|
+ "currency": "string",
|
|
|
+ "purpose": "string",
|
|
|
+ "status": "PENDING",
|
|
|
+ "reason": "string",
|
|
|
+ "create_time": "string",
|
|
|
+ "update_time": "string",
|
|
|
+ "completed_time": "string"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ */
|
|
|
+ break;
|
|
|
+ }
|
|
|
} catch (err) {
|
|
|
this.logger.error(
|
|
|
`easypay的webhook error ${type}: params${JSON.stringify(params)}`
|
|
@@ -65,4 +196,13 @@ export class OpenApiWebhookService extends BaseService {
|
|
|
this.ctx.body = {};
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ // 定时器
|
|
|
+ waitByTime(settime = 100) {
|
|
|
+ return new Promise((resolve: any) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ resolve();
|
|
|
+ }, settime);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|