瀏覽代碼

support bitpayx, notify is not work

root 5 年之前
父節點
當前提交
d197566922

+ 4 - 1
app/Http/Controllers/Admin/ConfigController.php

@@ -44,7 +44,10 @@ class ConfigController extends Controller
                     'stripe_pk_live' => config('v2board.stripe_pk_live'),
                     'stripe_alipay_enable' => (int)config('v2board.stripe_alipay_enable'),
                     'stripe_wepay_enable' => (int)config('v2board.stripe_wepay_enable'),
-                    'stripe_webhook_key' => config('v2board.stripe_webhook_key')
+                    'stripe_webhook_key' => config('v2board.stripe_webhook_key'),
+                    // bitpayx
+                    'bitpayx_enable' => config('v2board.bitpayx_enable'),
+                    'bitpayx_appsecret' => config('v2board.bitpayx_appsecret')
                 ],
                 'server' => [
                     'server_token' => config('v2board.server_token')

+ 37 - 0
app/Http/Controllers/OrderController.php

@@ -13,6 +13,7 @@ use App\Utils\Helper;
 use Omnipay\Omnipay;
 use Stripe\Stripe;
 use Stripe\Source;
+use Library\BitpayX;
 
 class OrderController extends Controller
 {
@@ -142,6 +143,15 @@ class OrderController extends Controller
                     'type' => 0,
                     'data' => $this->stripeWepay($order)
                 ]);
+            case 4:
+                // bitpayX
+                if (!(int)config('v2board.bitpayx_enable')) {
+                    abort(500, '支付方式不可用');
+                }
+                return response([
+                    'type' => 1,
+                    'data' => $this->bitpayX($order)
+                ]);
             default:
                 abort(500, '支付方式不存在');
         }
@@ -186,6 +196,14 @@ class OrderController extends Controller
             array_push($data, $stripeWepay);
         }
 
+        if ((int)config('v2board.bitpayx_enable')) {
+            $bitpayX = new \StdClass();
+            $bitpayX->name = '虚拟货币';
+            $bitpayX->method = 4;
+            $bitpayX->icon = 'bitcoin';
+            array_push($data, $bitpayX);
+        }
+
         return response([
             'data' => $data
         ]);
@@ -262,4 +280,23 @@ class OrderController extends Controller
         Redis::expire($source['id'], 3600);
         return $source['wechat']['qr_code_url'];
     }
+
+    private function bitpayX ($order) {
+        $bitpayX = new BitpayX(config('v2board.bitpayx_appsecret'));
+    	$params = [
+    		'merchant_order_id' => 'V2Board_' . $order->trade_no,
+	        'price_amount' => $order->total_amount / 100,
+	        'price_currency' => 'CNY',
+	        'title' => '支付单号:' . $order->trade_no,
+	        'description' => '充值:' . $order->total_amount / 100 . ' 元',
+	        'callback_url' => url('/api/v1/guest/order/bitpayXNotify'),
+	        'success_url' => config('v2board.app_url', env('APP_URL')) . '/#/order',
+	        'cancel_url' => config('v2board.app_url', env('APP_URL')) . '/#/order'
+        ];
+        $strToSign = $bitpayX->prepareSignId($params['merchant_order_id']);
+	    $params['token'] = $bitpayX->sign($strToSign);
+        $result = $bitpayX->mprequest($params);
+        Log::info('bitpayXSubmit: ' . json_encode($result));
+        return isset($result['payment_url']) ? $result['payment_url'] : false;
+    }
 }

+ 5 - 0
app/Http/Requests/Admin/ConfigSave.php

@@ -32,6 +32,9 @@ class ConfigSave extends FormRequest
             'stripe_alipay_enable',
             'stripe_wepay_enable',
             'stripe_webhook_key',
+            // bitpayx,
+            'bitpayx_enable',
+            'bitpayx_appsecret',
             // tutorial
             'apple_id',
             'apple_id_password'
@@ -65,6 +68,8 @@ class ConfigSave extends FormRequest
             // stripe
             'stripe_alipay_enable' => 'in:0,1',
             'stripe_wepay_enable' => 'in:0,1',
+            // bitpayx
+            'bitpayx_enable' => 'in:0,1',
             // tutorial
             'apple_id' => 'email'
         ];