Huifu.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\controller\api;
  12. use app\Request;
  13. use app\services\pay\PayNotifyServices;
  14. use qiniu\services\huifu\HuiFuService;
  15. use qiniu\utils\Hook;
  16. use think\Response;
  17. /**
  18. * 支付相关回调
  19. * Class PayController
  20. * @package app\controller\api\v1
  21. */
  22. class Huifu
  23. {
  24. /**
  25. * 支付回调
  26. * @param Request $request
  27. * @param string $type
  28. * @return false|string
  29. */
  30. public function notify(Request $request, string $type)
  31. {
  32. if (cache('hj_' . md5($request->getContent()))) return 'lock';
  33. cache('hj_' . md5($request->getContent()), 30);
  34. return HuiFuService::notify(function ($notify) use ($request) {
  35. if (isset($notify->out_trade_no)) {
  36. if (isset($notify->attach) && $notify->attach) {
  37. if (($count = strpos($notify->out_trade_no, '_')) !== false) {
  38. $notify->trade_no = $notify->out_trans_id;
  39. $notify->req_seq_id = $notify->out_trade_no;
  40. $notify->out_trade_no = substr($notify->out_trade_no, $count + 1);
  41. }
  42. cache('hj_' . md5($request->getContent()), null);
  43. return (new Hook(PayNotifyServices::class, 'huifu'))->listen($notify->attach, $notify->out_trade_no, $notify->trade_no, $notify->req_seq_id);
  44. }
  45. return false;
  46. }
  47. return false;
  48. });
  49. }
  50. /**
  51. * 退款回调
  52. * @param Request $request
  53. * @param string $type
  54. * @return Response
  55. */
  56. public function refund(Request $request, string $type)
  57. {
  58. @file_put_contents('hjverify.txt', $type . PHP_EOL, FILE_APPEND);
  59. @file_put_contents('hjverify.txt', $request->getContent() . PHP_EOL, FILE_APPEND);
  60. @file_put_contents('hjverify.txt', json_encode(input()) . PHP_EOL, FILE_APPEND);
  61. @file_put_contents('hjverify.txt', json_encode(input()) . PHP_EOL, FILE_APPEND);
  62. }
  63. }