import { BaseService } from '@cool-midway/core'; import { ILogger, Provide } from '@midwayjs/core'; import { Inject } from '@midwayjs/decorator'; import { PaymentSuccessService } from './webhook_utils/payment_success'; import { WebHookCommonService } from './webhook_utils/common'; import { DepositSuccessService } from './webhook_utils/deposit_success'; import { ExchangeSuccessService } from './webhook_utils/exchange_success'; import { TransferSuccessService } from './webhook_utils/transfer_success'; import { WebHookAccountService } from './webhook_utils/account'; /** * 描述 */ @Provide() export class OpenApiWebhookService extends BaseService { @Inject() webHookCommonService: WebHookCommonService; @Inject() paymentSuccessService: PaymentSuccessService; @Inject() depositSuccessService: DepositSuccessService; @Inject() exchangeSuccessService: ExchangeSuccessService; @Inject() transferSuccessService: TransferSuccessService; @Inject() webHookAccountService: WebHookAccountService; @Inject() ctx; @Inject() logger: ILogger; async easypayWebhook(params, type: string) { try { this.logger.info( `easypay的webhook_${type}: params${JSON.stringify(params)}` ); // TODO 各类回调处理 后续处理 // const {type} = params switch (params.type) { case 'account_approved': // 账户审核通过 account_approved return await this.webHookAccountService.run(params); case 'account_rejected': // 账户审核驳回 account_rejected return await this.webHookAccountService.run(params); case 'legal_entity_request_created': // 实名待更新 legal_entity_request_created return await this.webHookAccountService.run(params); case 'legal_entity_request_success': // 实名更新审核通过 legal_entity_request_success return await this.webHookAccountService.run(params); case 'legal_entity_request_rejected': // 实名更新审核驳回 legal_entity_request_rejected break; case 'application_success': // 收款账户申请成功 application_success break; case 'application_failed': // 收款账户申请失败 application_failed break; case 'bank_account_created': // 收款账户已下发 bank_account_created break; case 'bank_account_updated': // 收款账户信息变更 bank_account_updated break; case 'acquiring_payment_success': // 收单支付成功通知 acquiring_payment_success break; case 'acquiring_refund_success': // 收单支付成功通知 acquiring_refund_success break; case 'acquiring_refund_failed': // 收单退款失败通知 acquiring_refund_failed break; case 'exchange_failed': // 换汇失败 exchange_failed break; case 'payment_failed': // 付款失败 payment_failed break; case 'payment_refunded': // 付款银行退回 payment_refunded break; case 'transfer_failed': // 付款银行退回 transfer_failed break; case 'deposit_success': // 入账成功 deposit_success return await this.depositSuccessService.run(params); case 'exchange_success': // 换汇成功 exchange_success // 如果换汇成功,则收取手续费 return await this.exchangeSuccessService.run(params); case 'payment_success': // 付款成功 payment_success return await this.paymentSuccessService.run(params); case 'transfer_success': // 转账延迟2.2秒处理 await this.webHookCommonService.waitByTime(2200); return await this.transferSuccessService.run(params); } } catch (err) { this.logger.error( `easypay的webhook error ${type}: params${JSON.stringify(params)}` ); } // 转账延迟4秒处理 await this.webHookCommonService.waitByTime(4000); this.ctx.status = 400; this.ctx.body = {}; return; } }