PaymentEntryController.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. namespace App\Http\Controllers\Game;
  3. use App\Facade\TableName;
  4. use App\Http\Controllers\Api\BroQrController;
  5. use App\Models\Account\UserBlacklist;
  6. use App\Notification\TelegramBot;
  7. use App\Services\PayMentService;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\DB;
  10. use Illuminate\Support\Facades\Log;
  11. use Illuminate\Support\Facades\Redis;
  12. class PaymentEntryController {
  13. // 新支付总入口---区分签名
  14. public function pay(Request $request) {
  15. // return apiReturnFail(['web.payment.paytype_error','PayType ERROR']);
  16. // 获取数据
  17. $userId = (int)$request->globalUser->UserID;//(int)$request->input('userID');
  18. $payAmt = $request->input('payAmt');
  19. $userName = $request->input('userName');
  20. $userEmail = $request->input('userEmail');
  21. $userPhone = $request->input('userPhone');
  22. $pay_type = (int)$request->input('pay_type',28);
  23. $pay_method = $request->input('pay_method', 1);
  24. $GiftsID = (int)$request->input('GiftsID');
  25. $AdId = $request->input('AdId');
  26. $eventType = $request->input('eventType');
  27. $buyIP = $request->ip();
  28. if ($GiftsID == 'undefined') $GiftsID = '';
  29. $where[] = ['type', 'pay_method'];
  30. $where[] = ['status', 1];
  31. $where[] = ['id', $pay_type];
  32. // $payMethods = [
  33. // 'cashapp' => 1,
  34. // 'paypal' => 2,
  35. // 'applepay' => 4,
  36. // 'googlepay' => 8,
  37. //
  38. // ];
  39. $exists = UserBlacklist::where('UserID', $userId)->first();
  40. if ($exists){
  41. return apiReturnFail(['web.payment.paytype_error','User In Control']);
  42. }
  43. // 退款订单限制(仅在 pay_method = 2 时生效)
  44. if ((int)$pay_method === 2) {
  45. $refundCacheKey = 'user_refund_paymethod2_' . $userId;
  46. // 如果缓存中已经标记过有退款订单,则直接拦截
  47. if (Redis::get($refundCacheKey)) {
  48. return apiReturnFail(['web.payment.paytype_error','Refund Order Exists']);
  49. }
  50. // 查询是否存在退款订单(pay_status = 9 且 order_title = 2)
  51. $hasRefundOrder = DB::connection('write')
  52. ->table('agent.dbo.order')
  53. ->where('user_id', $userId)
  54. // ->where('order_title', 2)
  55. ->where('pay_status', 9)
  56. ->exists();
  57. // 有退款订单则写入缓存并返回错误
  58. if ($hasRefundOrder) {
  59. // 缓存一段时间,避免频繁查询
  60. Redis::setex($refundCacheKey, 86400, 1);
  61. return apiReturnFail(['web.payment.paytype_error','Refund Order Exists']);
  62. }
  63. }
  64. $query = DB::table('agent.dbo.admin_configs')->where($where)->value('config_key');
  65. if ($query === null || $query === false) {
  66. return apiReturnFail(['web.payment.paytype_error','PayType ERROR']);
  67. }
  68. if($pay_method>=64){
  69. $payServiceString = 'CoinPay';
  70. }else{
  71. $payServiceString = PayMentService::getServiceByPayMethod($query, $payAmt,$pay_method);
  72. if (empty($payServiceString)) {
  73. TelegramBot::getDefault()->sendProgramNotify("PayType ERROR Error PHP Code");
  74. return apiReturnFail(['web.payment.paytype_error','PayType ERROR']);
  75. }
  76. }
  77. if($userId == 80034530){
  78. $payServiceString = 'PagYeepPay';
  79. }
  80. $service = PayMentService::pay_order($payServiceString);
  81. if(isset($AdId)&&!empty($AdId))Redis::set('user_ad_'.$userId,$AdId);
  82. $result = $service->pay_order($userId, $payAmt, $userName, $userEmail, $userPhone, $GiftsID, $buyIP, $AdId, $eventType, $pay_method);
  83. return $result;
  84. }
  85. // 新支付总入口---区分签名
  86. public function payQR(Request $request) {
  87. // 获取数据
  88. $userId = (int)$request->globalUser->UserID;//(int)$request->input('userID');
  89. $payAmt = (int)$request->input('payAmt');
  90. $userName = $request->input('userName');
  91. $userEmail = $request->input('userEmail');
  92. $userPhone = $request->input('userPhone');
  93. $pay_type = (int)$request->input('pay_type');
  94. $GiftsID = (int)$request->input('GiftsID');
  95. $AdId = $request->input('AdId');
  96. $eventType = $request->input('eventType');
  97. $buyIP = $request->ip();
  98. $pay_method = (int)$request->input('pay_method','clabe');
  99. if ($GiftsID == 'undefined') $GiftsID = '';
  100. Log::info('channel', [
  101. 'string' => 'BroQrController'
  102. ]);
  103. $service =new BroQrController();
  104. if(isset($AdId)&&!empty($AdId))Redis::set('user_ad_'.$userId,$AdId);
  105. $result = $service->pay_order($userId, $payAmt, $userName, $userEmail, $userPhone, $GiftsID, $buyIP, $AdId, $eventType);
  106. return $result;
  107. }
  108. // 新支付总入口---区分签名
  109. public function iospay(Request $request) {
  110. // 获取数据
  111. $userId =(int)$request->globalUser->UserID;// (int)$request->input('userID');
  112. $payAmt = (int)$request->input('payAmt');
  113. $userName = $request->input('userName');
  114. $userEmail = $request->input('userEmail');
  115. $userPhone = $request->input('userPhone');
  116. $pay_type = (int)$request->input('pay_type');
  117. $GiftsID = (int)$request->input('GiftsID');
  118. $AdId = $request->input('AdId');
  119. $eventType = $request->input('eventType');
  120. $buyIP = $request->ip();
  121. if ($GiftsID == 'undefined') $GiftsID = '';
  122. $service = PayMentService::pay_order('apple');
  123. $result = $service->pay_order($userId, $payAmt, $userName, $userEmail, $userPhone, $GiftsID, $buyIP, $AdId, $eventType);
  124. return $result;
  125. }
  126. // 新支付总入口---区分签名
  127. public function googlepay(Request $request) {
  128. // 获取数据
  129. $userId = (int)$request->globalUser->UserID;//(int)$request->input('userID');
  130. $payAmt = (int)$request->input('payAmt');
  131. $userName = $request->input('userName');
  132. $userEmail = $request->input('userEmail');
  133. $userPhone = $request->input('userPhone');
  134. $pay_type = (int)$request->input('pay_type');
  135. $GiftsID = (int)$request->input('GiftsID');
  136. $AdId = $request->input('AdId');
  137. $eventType = $request->input('eventType');
  138. $buyIP = $request->ip();
  139. if ($GiftsID == 'undefined') $GiftsID = '';
  140. $service = PayMentService::pay_order('google');
  141. $result = $service->pay_order($userId, $payAmt, $userName, $userEmail, $userPhone, $GiftsID, $buyIP, $AdId, $eventType);
  142. return $result;
  143. }
  144. }