F2fpayController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Components\Callback;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Http\Request;
  6. use Log;
  7. use Payment\Client\Query;
  8. use Payment\Common\PayException;
  9. /**
  10. * Class F2fpayController
  11. *
  12. * @author heron
  13. *
  14. * @package App\Http\Controllers\Api
  15. */
  16. class F2fpayController extends Controller
  17. {
  18. use Callback;
  19. // 接收GET请求
  20. public function index(Request $request)
  21. {
  22. Log::info("【支付宝当面付】回调接口[GET]:".var_export($request->all(), TRUE).'['.getClientIp().']');
  23. exit("【支付宝当面付】接口正常");
  24. }
  25. // 接收POST请求
  26. public function store(Request $request)
  27. {
  28. Log::info("【支付宝当面付】回调接口[POST]:".var_export($request->all(), TRUE));
  29. $result = "fail";
  30. try{
  31. $verify_result = Query::run('ali_charge', [
  32. 'use_sandbox' => FALSE,
  33. "partner" => self::$systemConfig['f2fpay_app_id'],
  34. 'app_id' => self::$systemConfig['f2fpay_app_id'],
  35. 'sign_type' => 'RSA2',
  36. 'ali_public_key' => self::$systemConfig['f2fpay_public_key'],
  37. 'rsa_private_key' => self::$systemConfig['f2fpay_private_key'],
  38. 'notify_url' => self::$systemConfig['website_url']."/api/f2fpay", // 异步回调接口
  39. 'return_url' => self::$systemConfig['website_url'],
  40. 'return_raw' => FALSE
  41. ], [
  42. 'out_trade_no' => $request->input('out_trade_no'),
  43. 'trade_no' => $request->input('trade_no'),
  44. ]);
  45. Log::info("【支付宝当面付】回调验证查询:".var_export($verify_result, TRUE));
  46. } catch(PayException $e){
  47. Log::info("【支付宝当面付】回调验证查询出错:".var_export($e->errorMessage(), TRUE));
  48. exit($result);
  49. }
  50. if($verify_result['is_success'] == 'T'){ // 验证成功
  51. $result = "success";
  52. if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS'){
  53. // 商户订单号
  54. $data = [];
  55. $data['out_trade_no'] = $request->input('out_trade_no');
  56. // 支付宝交易号
  57. $data['trade_no'] = $request->input('trade_no');
  58. // 交易状态
  59. $data['trade_status'] = $request->input('trade_status');
  60. // 交易金额(这里是按照结算货币汇率的金额,和rmb_fee不相等)
  61. $data['total_amount'] = $request->input('total_amount');
  62. $this->tradePaid($data, 5);
  63. }else{
  64. Log::info('支付宝当面付-POST:交易失败['.getClientIp().']');
  65. }
  66. }else{
  67. Log::info('支付宝当面付-POST:验证失败['.getClientIp().']');
  68. }
  69. // 返回验证结果
  70. exit($result);
  71. }
  72. }