Skip to content

Commit 0c33fe2

Browse files
committed
v1.1.0
* The extension now uses BlockBee Checkout.
1 parent 2bdbef5 commit 0c33fe2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+286
-2321
lines changed

Block/Adminhtml/Form/Field/CryptocurrenciesSelect.php

-57
This file was deleted.

Block/Adminhtml/Sales/Order/Fee.php

100644100755
File mode changed.

Block/Adminhtml/Sales/Order/View.php

100644100755
File mode changed.

Block/Payment.php

+3-128
Original file line numberDiff line numberDiff line change
@@ -1,134 +1,9 @@
11
<?php
2-
32
namespace Blockbee\Blockbee\Block;
43

5-
use Blockbee\Blockbee\lib\BlockbeeHelper;
6-
use Magento\Framework\View\Element\Template;
4+
use Magento\Payment\Block\Form;
75

8-
class Payment extends Template
6+
class Payment extends Form
97
{
10-
protected $helper;
11-
protected $payment;
12-
13-
public function __construct(
14-
\Blockbee\Blockbee\Helper\Data $helper,
15-
\Blockbee\Blockbee\Model\Method\BlockbeePayment $payment,
16-
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
17-
\Magento\Framework\View\Element\Template\Context $context,
18-
\Magento\Sales\Api\OrderRepositoryInterface $orderRepository,
19-
\Magento\Framework\App\Request\Http $request,
20-
\Magento\Framework\App\ProductMetadataInterface $productMetadata,
21-
\Magento\Store\Model\StoreManagerInterface $storeManager,
22-
\Blockbee\Blockbee\Helper\Mail $mail,
23-
array $data = []
24-
)
25-
{
26-
parent::__construct($context, $data);
27-
$this->helper = $helper;
28-
$this->payment = $payment;
29-
$this->scopeConfig = $scopeConfig;
30-
$this->request = $request;
31-
$this->orderRepository = $orderRepository;
32-
$this->productMetadata = $productMetadata;
33-
$this->mail = $mail;
34-
$this->storeManager = $storeManager;
35-
}
36-
37-
public function getTemplateValues()
38-
{
39-
40-
try {
41-
if ($this->productMetadata->getVersion() >= 2.3 && $this->productMetadata->getVersion() < 2.4) {
42-
$order = $this->payment->getOrder();
43-
} else {
44-
$order_id = (int)$this->request->getParam('order_id');
45-
$nonce = (string)$this->request->getParam('nonce');
46-
$order = $this->orderRepository->get($order_id);
47-
}
48-
49-
$total = $order->getGrandTotal();
50-
$currencySymbol = $order->getOrderCurrencyCode();
51-
$metaData = $this->helper->getPaymentResponse($order->getQuoteId());
52-
53-
if (empty($metaData)) {
54-
throw new \Magento\Framework\Exception\AlreadyExistsException(
55-
__('You can only add one address per cryptocurrency')
56-
);
57-
}
58-
59-
$qrCodeSize = $this->scopeConfig->getValue('payment/blockbee/qrcode_size', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
60-
61-
$branding = $this->scopeConfig->getValue('payment/blockbee/show_branding', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
62-
63-
$metaData = json_decode($metaData, true);
64-
65-
if ($nonce != $metaData['blockbee_nonce']) {
66-
return false;
67-
}
68-
$cryptoValue = $metaData['blockbee_total'];
69-
$cryptoCoin = $metaData['blockbee_currency'];
70-
71-
if (isset($metaData['blockbee_address']) && !empty($metaData['blockbee_address'])) {
72-
$addressIn = $metaData['blockbee_address'];
73-
} else {
74-
/**
75-
* Makes request to API and generates all the payment data needed
76-
*/
77-
78-
$selected = $cryptoCoin;
79-
80-
$params = [
81-
'order_id' => $order->getId(),
82-
'nonce' => $metaData['blockbee_nonce'],
83-
];
84-
85-
$callbackUrl = $this->payment->getCallbackUrl();
86-
87-
$apiKey = $this->scopeConfig->getValue('payment/blockbee/api_key', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
88-
89-
$api = new BlockbeeHelper($selected, $apiKey, $callbackUrl, $params, true);
90-
$addressIn = $api->get_address();
91-
$qrCode = $api->get_qrcode('', $qrCodeSize);
92-
$qrCodeValue = $api->get_qrcode($cryptoValue, $qrCodeSize);
93-
$this->helper->updatePaymentData($order->getQuoteId(), 'blockbee_address', $addressIn);
94-
$this->helper->updatePaymentData($order->getQuoteId(), 'blockbee_qr_code_value', $qrCodeValue['qr_code']);
95-
$this->helper->updatePaymentData($order->getQuoteId(), 'blockbee_qr_code', $qrCode['qr_code']);
96-
$this->helper->updatePaymentData($order->getQuoteId(), 'blockbee_payment_url', $this->storeManager->getStore()->getUrl('blockbee/index/payment/order_id/' . $order->getId() . '/nonce/' . $metaData['blockbee_nonce']));
97-
98-
$metaData = json_decode($this->helper->getPaymentResponse($order->getQuoteId()), true);
99-
$this->mail->sendMail($order, $metaData);
100-
}
101-
102-
$ajaxParams = [
103-
'order_id' => $order->getId(),
104-
];
105-
106-
$ajaxUrl = $this->payment->getAjaxStatusUrl($ajaxParams);
107-
108-
$metaData = $this->helper->getPaymentResponse($order->getQuoteId());
109-
$metaData = json_decode($metaData, true);
110-
111-
return [
112-
'crypto_value' => floatval($cryptoValue),
113-
'currency_symbol' => $currencySymbol,
114-
'total' => $total,
115-
'address_in' => $addressIn,
116-
'crypto_coin' => $cryptoCoin,
117-
'ajax_url' => $ajaxUrl,
118-
'qrcode_size' => $qrCodeSize,
119-
'qrcode' => $metaData['blockbee_qr_code'],
120-
'qrcode_value' => $metaData['blockbee_qr_code_value'],
121-
'qrcode_default' => $this->scopeConfig->getValue('payment/blockbee/qrcode_default', \Magento\Store\Model\ScopeInterface::SCOPE_STORE),
122-
'show_branding' => $branding,
123-
'qr_code_setting' => $this->scopeConfig->getValue('payment/blockbee/qrcode_setting', \Magento\Store\Model\ScopeInterface::SCOPE_STORE),
124-
'order_timestamp' => strtotime($order->getCreatedAt()),
125-
'order_cancelation_timeout' => $this->scopeConfig->getValue('payment/blockbee/order_cancelation_timeout', \Magento\Store\Model\ScopeInterface::SCOPE_STORE),
126-
'refresh_value_interval' => $this->scopeConfig->getValue('payment/blockbee/refresh_value_interval', \Magento\Store\Model\ScopeInterface::SCOPE_STORE),
127-
'last_price_update' => $metaData['blockbee_last_price_update'],
128-
'min_tx' => $metaData['blockbee_min'],
129-
];
130-
} catch (\Exception $exception) {
131-
// Empty
132-
}
133-
}
8+
protected $_template = 'Magento_Payment::form/default.phtml';
1349
}

Controller/Index/Callback.php

100644100755
+55-55
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,39 @@
22

33
namespace Blockbee\Blockbee\Controller\Index;
44

5-
use Blockbee\Blockbee\lib\BlockbeeHelper;
65
use Magento\Framework\App\Action\HttpGetActionInterface;
76

87
class Callback implements HttpGetActionInterface
98
{
9+
/**
10+
* @var \Blockbee\Blockbee\Helper\Data
11+
*/
1012
protected $helper;
13+
14+
/**
15+
* @var \Blockbee\Blockbee\Model\Method\BlockbeePayment
16+
*/
1117
protected $payment;
12-
protected $orderFactory;
18+
19+
/**
20+
* @var \Magento\Sales\Api\OrderRepositoryInterface
21+
*/
22+
protected $orderRepository;
23+
24+
/**
25+
* @var \Magento\Framework\App\Config\ScopeConfigInterface
26+
*/
27+
protected $scopeConfig;
28+
29+
/**
30+
* @var \Magento\Framework\App\Request\Http
31+
*/
32+
protected $request;
33+
34+
/**
35+
* @var \Magento\Framework\App\Response\Http
36+
*/
37+
protected $response;
1338

1439
public function __construct(
1540
\Blockbee\Blockbee\Helper\Data $helper,
@@ -18,95 +43,70 @@ public function __construct(
1843
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
1944
\Magento\Framework\App\Request\Http $request,
2045
\Magento\Framework\App\Response\Http $response
21-
)
22-
{
23-
$this->helper = $helper;
24-
$this->payment = $payment;
46+
) {
47+
$this->helper = $helper;
48+
$this->payment = $payment;
2549
$this->orderRepository = $orderRepository;
26-
$this->scopeConfig = $scopeConfig;
27-
$this->request = $request;
28-
$this->response = $response;
50+
$this->scopeConfig = $scopeConfig;
51+
$this->request = $request;
52+
$this->response = $response;
2953
}
3054

3155
public function execute()
3256
{
33-
$params = $this->request->getParams();
34-
35-
$data = BlockbeeHelper::process_callback($params);
57+
$data = $this->request->getParams();
3658

3759
$order = $this->orderRepository->get($data['order_id']);
3860
$orderId = $order->getQuoteId();
3961

40-
$currencySymbol = $order->getOrderCurrencyCode();
62+
$currencySymbol = strtolower($order->getOrderCurrencyCode());
63+
$fiat_currency = $data['currency'];
4164

42-
$apiKey = $this->scopeConfig->getValue('payment/blockbee/api_key', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
43-
44-
$metaData = json_decode($this->helper->getPaymentResponse($orderId), true);
45-
46-
if ($data['coin'] !== $metaData['blockbee_currency']) {
65+
if ($currencySymbol !== $fiat_currency) {
4766
return $this->response->setBody("*ok*");
4867
}
4968

69+
$metaData = json_decode($this->helper->getPaymentResponse($orderId), true);
70+
5071
if ($this->payment->hasBeenPaid($order) || $data['nonce'] != $metaData['blockbee_nonce']) {
5172
return $this->response->setBody("*ok*");
5273
}
5374

54-
$paid = floatval($data['value_coin']);
55-
56-
$min_tx = floatval($metaData['blockbee_min']);
57-
75+
$paid = floatval($data['paid_amount']);
76+
$paid_fiat = floatval($data['paid_amount_fiat']);
77+
$is_paid = $data['is_paid'];
5878
$history = json_decode($metaData['blockbee_history'], true);
5979

6080
$update_history = true;
6181

62-
foreach ($history as $uuid => $item) {
63-
if ($uuid === $data['uuid']) {
82+
foreach ($history as $txid => $item) {
83+
if ($txid === $data['txid']) {
6484
$update_history = false;
6585
}
6686
}
6787

6888
if ($update_history) {
69-
$fiat_conversion = BlockbeeHelper::get_conversion($metaData['blockbee_currency'], $currencySymbol, $paid, $this->scopeConfig->getValue('payment/blockbee/disable_conversion', \Magento\Store\Model\ScopeInterface::SCOPE_STORE), $apiKey);
70-
71-
$history[$data['uuid']] = [
89+
$history[$data['txid']] = [
7290
'timestamp' => time(),
73-
'value_paid' => BlockbeeHelper::sig_fig($paid, 6),
74-
'value_paid_fiat' => $fiat_conversion,
75-
'pending' => $data['pending']
91+
'value_paid' => $paid,
92+
'value_paid_fiat' => $paid_fiat
7693
];
7794
} else {
78-
$history[$data['uuid']]['pending'] = $data['pending'];
95+
$history[$data['txid']]['pending'] = $data['pending'];
7996
}
8097

8198
$this->helper->updatePaymentData($orderId, 'blockbee_history', json_encode($history));
8299

83-
$metaData = json_decode($this->helper->getPaymentResponse($orderId), true);
84-
85-
$history = json_decode($metaData['blockbee_history'], true);
86-
87-
$calc = $this->payment::calcOrder($history, $metaData);
88-
89-
$remaining = $calc['remaining'];
90-
$remaining_pending = $calc['remaining_pending'];
91-
92-
if ($remaining_pending <= 0) {
93-
if ($remaining <= 0) {
94-
$state = \Magento\Sales\Model\Order::STATE_PROCESSING;
95-
$status = \Magento\Sales\Model\Order::STATE_PROCESSING;
96-
$order->setState($state);
97-
$order->setStatus($status);
98-
$order->setTotalPaid($order->getGrandTotal());
99-
$order->save();
100-
}
100+
if ($is_paid) {
101+
$state = \Magento\Sales\Model\Order::STATE_PROCESSING;
102+
$status = \Magento\Sales\Model\Order::STATE_PROCESSING;
103+
$order->setState($state);
104+
$order->setStatus($status);
105+
$order->setTotalPaid($order->getGrandTotal());
106+
$order->save();
101107
return $this->response->setBody("*ok*");
102108
}
103109

104-
if ($remaining_pending <= $min_tx) {
105-
$this->helper->updatePaymentData($orderId, 'blockbee_qr_code_value', BlockbeeHelper::get_static_qrcode($metaData['blockbee_address'], $metaData['blockbee_currency'], $min_tx, $this->scopeConfig->getValue('payment/blockbee/api_key', \Magento\Store\Model\ScopeInterface::SCOPE_STORE), $this->scopeConfig->getValue('payment/blockbee/qrcode_size', \Magento\Store\Model\ScopeInterface::SCOPE_STORE))['qr_code']);
106-
} else {
107-
$this->helper->updatePaymentData($orderId, 'blockbee_qr_code_value', BlockbeeHelper::get_static_qrcode($metaData['blockbee_address'], $metaData['blockbee_currency'], $remaining_pending, $this->scopeConfig->getValue('payment/blockbee/api_key', \Magento\Store\Model\ScopeInterface::SCOPE_STORE), $this->scopeConfig->getValue('payment/blockbee/qrcode_size', \Magento\Store\Model\ScopeInterface::SCOPE_STORE))['qr_code']);
108-
}
109-
110110
return $this->response->setBody("*ok*");
111111
}
112112
}

Controller/Index/CartQuote.php

100644100755
File mode changed.

Controller/Index/Payment.php

100644100755
File mode changed.

0 commit comments

Comments
 (0)