Ott.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-25 17:23
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\api\controller\v1;
  13. use app\BaseController;
  14. use app\model\api\PayTrade;
  15. use app\model\api\Recharge;
  16. use app\model\api\Site;
  17. use app\model\api\Warehouse;
  18. use app\Request;
  19. use library\services\UtilService;
  20. use library\utils\alipay;
  21. class Ott extends BaseController
  22. {
  23. public function alipay(Request $request) {
  24. $post = UtilService::getMore([
  25. ['order_id','0','empty','参数错误']
  26. ],$request);
  27. $recharge = new Recharge();
  28. $data = $recharge->where('order_id',$post['order_id'])->find();
  29. if(empty($data)) {
  30. return app('json')->fail('数据错误');
  31. }
  32. if(!empty($data['status'])) {
  33. return app('json')->fail('订单已经支付');
  34. }
  35. $alipay = new alipay();
  36. $data = $alipay->wapPay([
  37. 'name' => '在线充值'.$data['v'].'元',
  38. 'money' => $data['v'],
  39. 'order_id' => $data['order_id']
  40. ]);
  41. echo $data;
  42. }
  43. /**
  44. * 支付宝返回
  45. */
  46. public function alipayNotifyUrl(){
  47. $alipay = new alipay();
  48. $book = $alipay->verifyNotify($_POST);
  49. if(empty($book)) {
  50. return "fail";
  51. }
  52. $out_trade_no = $_POST['out_trade_no'];
  53. $payTrade = new PayTrade();
  54. $data = $payTrade->where('out_trade_no',$out_trade_no)->find();
  55. if(empty($data)) {
  56. return 'success';
  57. }
  58. if($data['status'] == 1) {
  59. return 'success';
  60. }
  61. //支付成功
  62. $queryStr = $alipay->query($out_trade_no)->httpBody;
  63. $qAr = json_decode($queryStr,true);
  64. if($qAr['alipay_trade_query_response']['trade_status'] == 'TRADE_CLOSED') {
  65. return "fail";
  66. }
  67. //充值费用
  68. if($data['type'] == 'recharge') {
  69. $recharge = new Recharge();
  70. $recharge->rechargeSuccess($out_trade_no);
  71. }
  72. $payTrade->where('id',$data['id'])->save(['status'=>1,'pay_time'=>time()]);
  73. return 'success';
  74. }
  75. /**
  76. * 支付返回
  77. * @param Request $request
  78. */
  79. public function alipayReturnUrl(Request $request){
  80. [$out_trade_no] = UtilService::getMore([
  81. ['out_trade_no','','empty','参数错误']
  82. ],$request,true);
  83. $payTrade = new PayTrade();
  84. $data = $payTrade->where('out_trade_no',$out_trade_no)->find();
  85. if(empty($data)) {
  86. $this->assign('error',"找不到订单数据");
  87. return $this->display('alipay_error');
  88. }
  89. $this->assign('data',$data);
  90. echo $this->display('alipay_ok');
  91. }
  92. // 打印log
  93. function log_result($file, $word) {
  94. $fp = fopen($file, "a");
  95. flock($fp, LOCK_EX);
  96. fwrite($fp, "执行日期:" . strftime("%Y-%m-%d-%H:%M:%S", time()) . "\n" . $word . "\n\n");
  97. flock($fp, LOCK_UN);
  98. fclose($fp);
  99. }
  100. }