EupController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace app\payment\controllers;
  3. use app\common\helpers\Url;
  4. use app\common\models\AccountWechats;
  5. use app\payment\PaymentController;
  6. use app\frontend\modules\finance\models\BalanceRecharge;
  7. use app\common\services\Pay;
  8. class EupController extends PaymentController
  9. {
  10. private $attach = [];
  11. public function preAction()
  12. {
  13. parent::preAction();
  14. if (empty(\YunShop::app()->uniacid)) {
  15. $this->attach = explode('a', $_GET['OrderID']);
  16. \Setting::$uniqueAccountId = \YunShop::app()->uniacid = $this->attach[0];
  17. AccountWechats::setConfig(AccountWechats::getAccountByUniacid(\YunShop::app()->uniacid));
  18. }
  19. }
  20. //异步充值通知
  21. public function notifyUrl()
  22. {
  23. $parameter = $_GET;
  24. \Log::debug('------------EUP异步通知----------------'.$_SERVER['QUERY_STRING']);
  25. if(!empty($parameter)){
  26. if($this->getSignResult($parameter)) {
  27. $recharge_log = BalanceRecharge::ofOrderSn($this->attach[1])->withoutGlobalScope('member_id')->first();
  28. if ($recharge_log && $recharge_log->status != 1) {
  29. $this->log($parameter);
  30. \Log::info('------EUP验证成功-----');
  31. $data = [
  32. 'total_fee' => floatval($parameter['Amount']),
  33. 'out_trade_no' => $this->attach[1],
  34. 'trade_no' => 'eup',
  35. 'unit' => 'yuan',
  36. 'pay_type' => 'EUP支付',
  37. 'pay_type_id' => 19,
  38. ];
  39. $this->payResutl($data);
  40. \Log::info('----EUP结束----');
  41. echo 'ok';
  42. } else {
  43. if ($recharge_log && $recharge_log->status == 1) {
  44. echo 'ok';
  45. }
  46. }
  47. } else {
  48. //签名验证失败
  49. echo '签名验证失败';
  50. }
  51. }else {
  52. echo '无参数';
  53. }
  54. }
  55. //同步充值通知
  56. public function returnUrl()
  57. {
  58. $parameter = $_GET;
  59. $this->log($parameter);
  60. if(!empty($parameter)){
  61. if($this->getSignResult($parameter)) {
  62. $recharge_log = BalanceRecharge::ofOrderSn($this->attach[1])->withoutGlobalScope('member_id')->first();
  63. if ($recharge_log && $recharge_log->status != 1) {
  64. \Log::info('------EUP验证成功-----');
  65. $data = [
  66. 'total_fee' => floatval($parameter['Amount']),
  67. 'out_trade_no' => $this->attach[1],
  68. 'trade_no' => 'eup',
  69. 'unit' => 'yuan',
  70. 'pay_type' => 'EUP支付',
  71. 'pay_type_id' => 19,
  72. ];
  73. $this->payResutl($data);
  74. \Log::info('----EUP结束----');
  75. redirect(Url::absoluteApp('member', ['i' => \YunShop::app()->uniacid]))->send();
  76. } else {
  77. if ($recharge_log && $recharge_log->status == 1) {
  78. \Log::debug('--------EUP充值已记录------------');
  79. redirect(Url::absoluteApp('member', ['i' => \YunShop::app()->uniacid]))->send();
  80. }
  81. //其他错误
  82. \Log::debug('----EUP充值记录不存在----');
  83. }
  84. } else {
  85. //签名验证失败
  86. \Log::debug('----EUP签名验证失败----');
  87. }
  88. }else {
  89. \Log::debug('----参数为空----');
  90. }
  91. redirect(Url::absoluteApp('home'))->send();
  92. }
  93. /**
  94. * 签名验证
  95. *
  96. * @return bool
  97. */
  98. public function getSignResult($parameter)
  99. {
  100. $key = $parameter['OrderID'].$parameter['Amount'].'zhijie';
  101. $md5_key = md5(md5($key));
  102. return $parameter['Sign'] == $md5_key;
  103. }
  104. /**
  105. * 支付日志
  106. *
  107. * @param $post
  108. */
  109. public function log($data)
  110. {
  111. //访问记录
  112. Pay::payAccessLog();
  113. //保存响应数据
  114. Pay::payResponseDataLog($this->attach[1], 'EUP充值支付', json_encode($data));
  115. }
  116. }