webhook.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { BaseService } from '@cool-midway/core';
  2. import { ILogger, Provide } from '@midwayjs/core';
  3. import { Inject } from '@midwayjs/decorator';
  4. import { PaymentSuccessService } from './webhook_utils/payment_success';
  5. import { WebHookCommonService } from './webhook_utils/common';
  6. import { DepositSuccessService } from './webhook_utils/deposit_success';
  7. import { ExchangeSuccessService } from './webhook_utils/exchange_success';
  8. import { TransferSuccessService } from './webhook_utils/transfer_success';
  9. import { WebHookAccountService } from './webhook_utils/account';
  10. /**
  11. * 描述
  12. */
  13. @Provide()
  14. export class OpenApiWebhookService extends BaseService {
  15. @Inject()
  16. webHookCommonService: WebHookCommonService;
  17. @Inject()
  18. paymentSuccessService: PaymentSuccessService;
  19. @Inject()
  20. depositSuccessService: DepositSuccessService;
  21. @Inject()
  22. exchangeSuccessService: ExchangeSuccessService;
  23. @Inject()
  24. transferSuccessService: TransferSuccessService;
  25. @Inject()
  26. webHookAccountService: WebHookAccountService;
  27. @Inject()
  28. ctx;
  29. @Inject()
  30. logger: ILogger;
  31. async easypayWebhook(params, type: string) {
  32. try {
  33. this.logger.info(
  34. `easypay的webhook_${type}: params${JSON.stringify(params)}`
  35. );
  36. // TODO 各类回调处理 后续处理
  37. // const {type} = params
  38. switch (params.type) {
  39. case 'account_approved':
  40. // 账户审核通过 account_approved
  41. return await this.webHookAccountService.run(params);
  42. case 'account_rejected':
  43. // 账户审核驳回 account_rejected
  44. return await this.webHookAccountService.run(params);
  45. case 'legal_entity_request_created':
  46. // 实名待更新 legal_entity_request_created
  47. return await this.webHookAccountService.run(params);
  48. case 'legal_entity_request_success':
  49. // 实名更新审核通过 legal_entity_request_success
  50. return await this.webHookAccountService.run(params);
  51. case 'legal_entity_request_rejected':
  52. // 实名更新审核驳回 legal_entity_request_rejected
  53. break;
  54. case 'application_success':
  55. // 收款账户申请成功 application_success
  56. break;
  57. case 'application_failed':
  58. // 收款账户申请失败 application_failed
  59. break;
  60. case 'bank_account_created':
  61. // 收款账户已下发 bank_account_created
  62. break;
  63. case 'bank_account_updated':
  64. // 收款账户信息变更 bank_account_updated
  65. break;
  66. case 'acquiring_payment_success':
  67. // 收单支付成功通知 acquiring_payment_success
  68. break;
  69. case 'acquiring_refund_success':
  70. // 收单支付成功通知 acquiring_refund_success
  71. break;
  72. case 'acquiring_refund_failed':
  73. // 收单退款失败通知 acquiring_refund_failed
  74. break;
  75. case 'exchange_failed':
  76. // 换汇失败 exchange_failed
  77. break;
  78. case 'payment_failed':
  79. // 付款失败 payment_failed
  80. break;
  81. case 'payment_refunded':
  82. // 付款银行退回 payment_refunded
  83. break;
  84. case 'transfer_failed':
  85. // 付款银行退回 transfer_failed
  86. break;
  87. case 'deposit_success':
  88. // 入账成功 deposit_success
  89. return await this.depositSuccessService.run(params);
  90. case 'exchange_success':
  91. // 换汇成功 exchange_success
  92. // 如果换汇成功,则收取手续费
  93. return await this.exchangeSuccessService.run(params);
  94. case 'payment_success':
  95. // 付款成功 payment_success
  96. return await this.paymentSuccessService.run(params);
  97. case 'transfer_success':
  98. // 转账延迟2.2秒处理
  99. await this.webHookCommonService.waitByTime(2200);
  100. return await this.transferSuccessService.run(params);
  101. }
  102. } catch (err) {
  103. this.logger.error(
  104. `easypay的webhook error ${type}: params${JSON.stringify(params)}`
  105. );
  106. }
  107. // 转账延迟4秒处理
  108. await this.webHookCommonService.waitByTime(4000);
  109. this.ctx.status = 400;
  110. this.ctx.body = {};
  111. return;
  112. }
  113. }