AlipayController.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Components\AlipayNotify;
  4. use App\Components\Callback;
  5. use App\Http\Controllers\Controller;
  6. use Illuminate\Http\Request;
  7. use Log;
  8. class AlipayController extends Controller
  9. {
  10. use Callback;
  11. // 接收GET请求
  12. public function index(Request $request)
  13. {
  14. Log::info("【支付宝国际】回调接口[GET]:".var_export($request->all(), TRUE).'['.getClientIp().']');
  15. exit("【支付宝国际】接口正常");
  16. }
  17. // 接收POST请求
  18. public function store(Request $request)
  19. {
  20. Log::info("【支付宝国际】回调接口[POST]:".var_export($request->all(), TRUE));
  21. $alipayNotify = new AlipayNotify(self::$systemConfig['alipay_sign_type'], self::$systemConfig['alipay_partner'], self::$systemConfig['alipay_key'], self::$systemConfig['alipay_private_key'], self::$systemConfig['alipay_public_key'], self::$systemConfig['alipay_transport']);
  22. // 验证支付宝交易
  23. $result = "fail";
  24. $verify_result = $alipayNotify->verifyNotify();
  25. if($verify_result){ // 验证成功
  26. $result = "success";
  27. if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS'){
  28. // 商户订单号
  29. $data = [];
  30. $data['out_trade_no'] = $request->input('out_trade_no');
  31. // 支付宝交易号
  32. $data['trade_no'] = $request->input('trade_no');
  33. // 交易状态
  34. $data['trade_status'] = $request->input('trade_status');
  35. // 交易金额(这里是按照结算货币汇率的金额,和rmb_fee不相等)
  36. $data['total_fee'] = $request->input('total_fee');
  37. $this->tradePaid($data, 4);
  38. }else{
  39. Log::info('支付宝国际-POST:交易失败['.getClientIp().']');
  40. }
  41. }else{
  42. Log::info('支付宝国际-POST:验证失败['.getClientIp().']');
  43. }
  44. // 返回验证结果
  45. exit($result);
  46. }
  47. }