From 9a1c76a23a48d804d0d9866e7c655d64f17f2eb3 Mon Sep 17 00:00:00 2001 From: cnohall Date: Thu, 12 Sep 2024 14:06:53 +0900 Subject: [PATCH] add support for QR-code --- .../Gateways/BlockonomicsController.php | 26 ++++ .../Blockonomics/Blockonomics.php | 6 +- .../BlockonomicsPaymentDriver.php | 4 + .../gateways/blockonomics/pay.blade.php | 139 +++++++++++++++--- routes/api.php | 1 + 5 files changed, 150 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/Gateways/BlockonomicsController.php b/app/Http/Controllers/Gateways/BlockonomicsController.php index 5f451a49c0fb..4cdbfd5ed80f 100644 --- a/app/Http/Controllers/Gateways/BlockonomicsController.php +++ b/app/Http/Controllers/Gateways/BlockonomicsController.php @@ -15,6 +15,10 @@ namespace App\Http\Controllers\Gateways; use App\Http\Controllers\Controller; use Illuminate\Http\Request; // Import the Request class use Illuminate\Support\Facades\Http; // Import the Http facade +use BaconQrCode\Renderer\Image\SvgImageBackEnd; +use BaconQrCode\Renderer\ImageRenderer; +use BaconQrCode\Renderer\RendererStyle\RendererStyle; +use BaconQrCode\Writer; class BlockonomicsController extends Controller { @@ -29,4 +33,26 @@ class BlockonomicsController extends Controller return response()->json(['error' => 'Unable to fetch BTC price'], 500); } + + public function getQRCode(Request $request) + { + $qr_string = $request->query('qr_string'); + $svg = $this->getPaymentQrCodeRaw($qr_string); + return response($svg)->header('Content-Type', 'image/svg+xml'); + } + + private function getPaymentQrCodeRaw($qr_string) + { + + $renderer = new ImageRenderer( + new RendererStyle(150, margin: 0), + new SvgImageBackEnd() + ); + $writer = new Writer($renderer); + + $qr = $writer->writeString($qr_string, 'utf-8'); + + return $qr; + + } } \ No newline at end of file diff --git a/app/PaymentDrivers/Blockonomics/Blockonomics.php b/app/PaymentDrivers/Blockonomics/Blockonomics.php index 13c40fbd12d4..408b5b6b319d 100644 --- a/app/PaymentDrivers/Blockonomics/Blockonomics.php +++ b/app/PaymentDrivers/Blockonomics/Blockonomics.php @@ -23,17 +23,13 @@ use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; use App\Exceptions\PaymentFailed; use App\Jobs\Util\SystemLogger; use App\Jobs\Mail\PaymentFailureMailer; -use Illuminate\Mail\Mailables\Address; -use App\Services\Email\EmailObject; -use App\Services\Email\Email; -use Illuminate\Support\Facades\App; -use App\Models\Invoice; class Blockonomics implements MethodInterface { use MakesHash; public $driver_class; + public $blockonomics; public function __construct(BlockonomicsPaymentDriver $driver_class) { diff --git a/app/PaymentDrivers/BlockonomicsPaymentDriver.php b/app/PaymentDrivers/BlockonomicsPaymentDriver.php index 77ccc318f9bb..c6c56c181c0d 100644 --- a/app/PaymentDrivers/BlockonomicsPaymentDriver.php +++ b/app/PaymentDrivers/BlockonomicsPaymentDriver.php @@ -50,6 +50,10 @@ class BlockonomicsPaymentDriver extends BaseDriver public $NEW_ADDRESS_URL = 'https://www.blockonomics.co/api/new_address'; public $PRICE_URL = 'https://www.blockonomics.co/api/price'; + public $api_key; + public $callback_url; + public $callback_secret; + public function init() { $this->api_key = $this->company_gateway->getConfigField('apiKey'); diff --git a/resources/views/portal/ninja2020/gateways/blockonomics/pay.blade.php b/resources/views/portal/ninja2020/gateways/blockonomics/pay.blade.php index 029f12c681e2..2fb8132c87a9 100644 --- a/resources/views/portal/ninja2020/gateways/blockonomics/pay.blade.php +++ b/resources/views/portal/ninja2020/gateways/blockonomics/pay.blade.php @@ -14,20 +14,35 @@
Invoice #{{$invoice_number}}
{{$amount}} {{$currency}}
- To pay, send bitcoin to this address: - - - ') }}" class="icon" alt="Copy Icon"> - - Amount of bitcoin (BTC) to send: - -
- {{$btc_amount}} +
+
+
Scan
+ + +
+
+
+ Open in Wallet +
+
+
Copy
+ To pay, send bitcoin to this address: + + + ') }}" class="icon" alt="Copy Icon"> + + Amount of bitcoin (BTC) to send: + +
+ {{$btc_amount}} +
+ ') }}" class="icon" alt="Copy Icon"> +
+
+
1 BTC = {{$btc_price}} {{$currency}}, updates in
+ +
- ') }}" class="icon" alt="Copy Icon"> - - -
1 BTC = {{$btc_price}} {{$currency}}, updates in
@@ -38,6 +53,7 @@ + @@ -79,10 +95,16 @@ startTimer(600); // Start the timer for 10 minutes (600 seconds) + +