AlipayController.php 1.9 KB

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