NotifyController.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace addons\HuifuPay\api\controllers;
  3. use addons\HuifuPay\common\service\PayService;
  4. use common\models\common\PaymentTrade;
  5. use addons\HuifuPay\common\models\HuifuPayOrderModel;
  6. use addons\HuifuPay\common\service\HuifuService;
  7. use yii\web\Controller;
  8. use Yii;
  9. use Exception;
  10. use common\helpers\FileHelper;
  11. use common\helpers\ArrayHelper;
  12. use common\enums\PayTypeEnum;
  13. /**
  14. * 支付回调
  15. *
  16. * Class NotifyController
  17. * @package frontend\controllers
  18. */
  19. class NotifyController extends Controller
  20. {
  21. //use PayNotify;
  22. /**
  23. * 关闭csrf
  24. *
  25. * @var bool
  26. */
  27. public $enableCsrfValidation = false;
  28. public function actionNotify()
  29. {
  30. $params = $this->request->post();
  31. \Yii::error('汇会天下支付回调:' . json_encode($params));
  32. if(!isset($params['resp_data'])||!isset($params['sign']))
  33. {
  34. throw new Exception('数据有误');
  35. }
  36. if($params['resp_code']!='00000000'&&$params['resp_code']!='00000100')
  37. {
  38. throw new Exception($params['resp_desc']);
  39. }
  40. $data=json_decode($params['resp_data'],true);
  41. $sign=$params['sign'];
  42. //获取交易信息
  43. $huifuOrder=HuifuPayOrderModel::findOne(['hf_order_no' => $data['req_seq_id']]);
  44. if(!$huifuOrder)
  45. {
  46. \Yii::error('汇会天下支付回调错误:找不到订单:'.$data['req_seq_id']);
  47. throw new Exception('找不到订单');
  48. }
  49. // 存储异步信心
  50. $huifuOrder->notify = $data;
  51. $huifuOrder->save();
  52. if($data['trans_stat']!="S")
  53. {
  54. return;
  55. }
  56. $trade = PaymentTrade::findOne(['out_trade_no' => $huifuOrder->trade_no]);
  57. if (!$trade) return true;
  58. $huifuService = new HuifuService($trade->mall_id);
  59. $signResult=$huifuService->verifySign($sign,$data);
  60. $pay_service = new PayService($trade->mall_id);
  61. $res = $pay_service->notify($trade,$data);
  62. if ($res) {
  63. echo 'success';
  64. } else {
  65. echo "erro";
  66. }
  67. }
  68. //快捷支付容错处理
  69. public function actionNotify2()
  70. {
  71. }
  72. }