mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-30 17:02:04 +08:00 
			
		
		
		
	stripe test
This commit is contained in:
		| @@ -9,12 +9,10 @@ use App\Services\OrderService; | ||||
| use App\Services\UserService; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Support\Facades\Cache; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Illuminate\Support\Facades\DB; | ||||
| use App\Models\Order; | ||||
| use App\Models\Plan; | ||||
| use App\Models\User; | ||||
| use App\Models\Coupon; | ||||
| use App\Utils\Helper; | ||||
| use Omnipay\Omnipay; | ||||
| use Stripe\Stripe; | ||||
| @@ -173,7 +171,7 @@ class OrderController extends Controller | ||||
|             ]); | ||||
|         } | ||||
|         switch ($method) { | ||||
|             // return type => 0: QRCode / 1: URL | ||||
|             // return type => 0: QRCode / 1: URL / 2: No action | ||||
|             case 0: | ||||
|                 // alipayF2F | ||||
|                 if (!(int)config('v2board.alipay_enable')) { | ||||
| @@ -218,6 +216,14 @@ class OrderController extends Controller | ||||
|                     'type' => 1, | ||||
|                     'data' => $this->payTaro($order) | ||||
|                 ]); | ||||
|             case 6: | ||||
|                 if (!(int)config('v2board.stripe_card_enable')) { | ||||
|                     abort(500, '支付方式不可用'); | ||||
|                 } | ||||
|                 return response([ | ||||
|                     'type' => 2, | ||||
|                     'data' => $this->stripeCard($order, $request->input('token')) | ||||
|                 ]); | ||||
|             default: | ||||
|                 abort(500, '支付方式不存在'); | ||||
|         } | ||||
| @@ -280,6 +286,14 @@ class OrderController extends Controller | ||||
|             array_push($data, $obj); | ||||
|         } | ||||
|  | ||||
|         if ((int)config('v2board.stripe_card_enable')) { | ||||
|             $obj = new \StdClass(); | ||||
|             $obj->name = '信用卡'; | ||||
|             $obj->method = 6; | ||||
|             $obj->icon = 'card'; | ||||
|             array_push($data, $obj); | ||||
|         } | ||||
|  | ||||
|         return response([ | ||||
|             'data' => $data | ||||
|         ]); | ||||
| @@ -347,7 +361,7 @@ class OrderController extends Controller | ||||
|             'statement_descriptor' => $order->trade_no, | ||||
|             'metadata' => [ | ||||
|                 'user_id' => $order->user_id, | ||||
|                 'invoice_id' => $order->trade_no, | ||||
|                 'out_trade_no' => $order->trade_no, | ||||
|                 'identifier' => '' | ||||
|             ], | ||||
|             'redirect' => [ | ||||
| @@ -357,10 +371,6 @@ class OrderController extends Controller | ||||
|         if (!$source['redirect']['url']) { | ||||
|             abort(500, '支付网关请求失败'); | ||||
|         } | ||||
|  | ||||
|         if (!Cache::put($source['id'], $order->trade_no, 3600)) { | ||||
|             abort(500, '订单创建失败'); | ||||
|         } | ||||
|         return $source['redirect']['url']; | ||||
|     } | ||||
|  | ||||
| @@ -378,7 +388,7 @@ class OrderController extends Controller | ||||
|             'type' => 'wechat', | ||||
|             'metadata' => [ | ||||
|                 'user_id' => $order->user_id, | ||||
|                 'invoice_id' => $order->trade_no, | ||||
|                 'out_trade_no' => $order->trade_no, | ||||
|                 'identifier' => '' | ||||
|             ], | ||||
|             'redirect' => [ | ||||
| @@ -388,12 +398,38 @@ class OrderController extends Controller | ||||
|         if (!$source['wechat']['qr_code_url']) { | ||||
|             abort(500, '支付网关请求失败'); | ||||
|         } | ||||
|         if (!Cache::put($source['id'], $order->trade_no, 3600)) { | ||||
|             abort(500, '订单创建失败'); | ||||
|         } | ||||
|         return $source['wechat']['qr_code_url']; | ||||
|     } | ||||
|  | ||||
|     private function stripeCard($order, string $token) | ||||
|     { | ||||
|         $currency = config('v2board.stripe_currency', 'hkd'); | ||||
|         $exchange = Helper::exchange('CNY', strtoupper($currency)); | ||||
|         if (!$exchange) { | ||||
|             abort(500, '货币转换超时,请稍后再试'); | ||||
|         } | ||||
|         Stripe::setApiKey(config('v2board.stripe_sk_live')); | ||||
|         try { | ||||
|             $charge = \Stripe\Charge::create([ | ||||
|                 'amount' => floor($order->total_amount * $exchange), | ||||
|                 'currency' => $currency, | ||||
|                 'source' => $token, | ||||
|                 'metadata' => [ | ||||
|                     'user_id' => $order->user_id, | ||||
|                     'out_trade_no' => $order->trade_no, | ||||
|                     'identifier' => '' | ||||
|                 ] | ||||
|             ]); | ||||
|         } catch (\Exception $e) { | ||||
|             abort(500, '遇到了点问题,请刷新页面稍后再试'); | ||||
|         } | ||||
|         info($charge); | ||||
|         if (!$charge->paid) { | ||||
|             abort(500, '扣款失败,请检查信用卡信息'); | ||||
|         } | ||||
|         return $charge->paid; | ||||
|     } | ||||
|  | ||||
|     private function bitpayX($order) | ||||
|     { | ||||
|         $bitpayX = new BitpayX(config('v2board.bitpayx_appsecret')); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user