From 79510580976e04a34d831d0875556b8b7312e2e7 Mon Sep 17 00:00:00 2001 From: kogeletey Date: Fri, 23 Feb 2024 11:48:16 +0300 Subject: [PATCH] feat: send_request of bitcart --- BitCart.php | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ index.php | 50 ------------------------- 2 files changed, 106 insertions(+), 50 deletions(-) create mode 100644 BitCart.php delete mode 100644 index.php diff --git a/BitCart.php b/BitCart.php new file mode 100644 index 0000000..f6d496e --- /dev/null +++ b/BitCart.php @@ -0,0 +1,106 @@ + 'BitCart', + 'version' => '0.0.1', + 'author' => '0ut0f.space', + 'website' => 'https://0ut0f.space', + ]; + } + + /** + * Get all the configuration for the extension + * + * @return array + */ + public function getConfig() + { + return [ + [ + 'name' => 'api_endpoint', + 'friendlyName' => 'BitCart API endpoint', + 'type' => 'text', + 'required' => true, + ], + [ + 'name' => 'store_id', + 'friendlyName' => 'BitCart store id', + 'type' => 'text', + 'required' => true, + ], + [ + 'name'=>'admin_url', + 'friendlyName' => 'BitCart admin URL', + 'type' => 'text', + 'required' => true, + ], + ]; + } + + /** + * Get the URL to redirect to + * + * @param int $total + * @param array $products + * @param int $invoiceId + */ + public function pay($total, $products, $invoiceId) + { + $payment_url = $this->get_payment_url($invoiceId,$total); + return $payment_url; + } + + public function get_payment_url ($invoiceId, $amount) { + $api_domain = ExtensionHelper::getConfig('Bitcart', 'api_endpoint'); + $admin_domain = ExtensionHelper::getConfig('Bitcart','admin_url'); + $params = array( + 'price' => number_format($amount, 2, '.', ''), + 'store_id' => ExtensionHelper::getConfig('Bitcart','store_id'), + 'currency' => ExtensionHelper::getCurrency(), + 'email' => auth()->user()->email, + 'redirect_url' => route('clients.invoice.show', $invoiceId), + 'order_id' => $invoiceId, + ); + $invoice = $this->send_request(sprintf('%s/%s', $api_domain, 'invoices/order_id/' . urlencode($invoiceId)), $params); + return $admin_domain . '/i/' . $invoice->id; + } + + public function send_request($url, $data, $post = 1) + { + $post_fields = json_encode($data); + + $request_headers = array(); + $request_headers[] = 'Content-Type: application/json'; + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers); + if ($post) { + curl_setopt($ch, CURLOPT_POST, $post); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); + } + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $result = curl_exec($ch); + + curl_close($ch); + + return json_decode($result); + } +} diff --git a/index.php b/index.php deleted file mode 100644 index 75f11d6..0000000 --- a/index.php +++ /dev/null @@ -1,50 +0,0 @@ - 'bitcart_api_endpoint', - 'friendlyName' => 'Bitcart domain name', - 'type' => 'text', - 'description' => 'Your Bitcart instance\'s Merchants API URL.', - 'required' => true, - ], - [ - 'name' => 'bitcart_store', - 'friendlyName' => 'Bitcart store id', - 'type' => 'text', - 'description' => 'Store ID of your Bitcart Store.', - 'required' => true, - ], - [ - 'name'=>'bitcart_admin_url', - 'friendlyName' => 'Admin URL', - 'type' => 'text', - 'description' => 'Your Bitcart instance\'s Admin Panel URL.', - 'required' => true, - ], - ]; - } - -public function Bitcart_pay($total, $products, $orderId) -{ - -} - -protected function _generateForm($invoiceID) - { - $htmlOutput = ''; - $htmlOutput .= ''; - $htmlOutput .= ' - '; - return $htmlOutput; -}