diff --git a/Controller/Checkout/Invoice.php b/Controller/Checkout/Invoice.php index 4cb2771..9aed426 100644 --- a/Controller/Checkout/Invoice.php +++ b/Controller/Checkout/Invoice.php @@ -95,9 +95,9 @@ private function getApiRequestData(Order $order) 'price' => $orderItem->getPrice(), 'type' => 'PRODUCT', 'url' => $product->getProductUrl() ?: 'https://xendit.co/', - 'quantity' => (int)$orderItem->getQtyOrdered() + 'quantity' => (int) $orderItem->getQtyOrdered() ]; - $items[] = (object)$item; + $items[] = (object) $item; } $amount = $order->getTotalDue(); @@ -141,7 +141,10 @@ private function createInvoice($requestData) $invoice = ''; try { - $this->getLogger()->info('createInvoice start', ['data' => $requestData]); + $this->getLogger()->info('createInvoice start', [ + 'invoiceUrl' => $invoiceUrl, + 'data' => $requestData + ]); $invoice = $this->getApiHelper()->request( $invoiceUrl, diff --git a/DEV.md b/DEV.md index a89201f..844eb64 100644 --- a/DEV.md +++ b/DEV.md @@ -81,6 +81,7 @@ 3. Go to `Xendit` and input the public and private key 3. Setup custom callback url to receive payment notification 1. Modify `magento2/etc/env.php` to `'MAGE_MODE' => 'developer'` instead of `default` + 1. Another way is to run `php bin/magento deploy:mode:set developer` 2. Install a tunneling tool like [ngrok](https://ngrok.com/): `brew install ngrok` 3. Start ngrok to tunnel your local Magento: `ngrok http https://magento24.local` 4. Copy the HTTPS ngrok URL (e.g., `https://abc123.ngrok.io`) @@ -101,6 +102,20 @@ ## TroubleShoot +### Error during setup default website +``` +In WebsiteRepository.php line 159: + + The default website isn't defined. Set the web + site and try again. +``` +- this probably happens if u recreate the docker container + +#### Fix +- delete all cache and env generated by previous setup +``` +docker exec web bash -c "cd app && rm -rf app/etc/env.php app/etc/config.php var/cache/* var/page_cache/* var/session/* var/di/* var/generation/* var/view_preprocessed/* pub/static/* generated/*" +``` ## Appendix diff --git a/Helper/ApiRequest.php b/Helper/ApiRequest.php index d9fd314..3f4ae98 100644 --- a/Helper/ApiRequest.php +++ b/Helper/ApiRequest.php @@ -74,6 +74,13 @@ public function request( $customHeaders = [] ) { try { + // Log request details + $this->xenditLogger->info('API Request', [ + 'url' => $url, + 'method' => $method, + 'request_body' => $requestData ? json_encode($requestData) : null + ]); + $headers = $this->getHeaders($isPublicRequest, $preferredMethod, $customHeaders); $this->magentoCurl->setHeaders($headers); $this->magentoCurl->setTimeout(30); @@ -92,7 +99,15 @@ public function request( ); } - return json_decode($this->magentoCurl->getBody(), true); + $response = json_decode($this->magentoCurl->getBody(), true); + + // Log response details + $this->xenditLogger->info('API Response', [ + 'url' => $url, + 'status_code' => $this->magentoCurl->getStatus() + ]); + + return $response; } catch (\Exception $e) { throw new \Magento\Framework\Exception\LocalizedException( new Phrase($e->getMessage()) diff --git a/Helper/Data.php b/Helper/Data.php index 8742e96..f2a6921 100644 --- a/Helper/Data.php +++ b/Helper/Data.php @@ -9,6 +9,7 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\App\Helper\AbstractHelper; use Magento\Framework\App\Helper\Context; +use Magento\Framework\App\State as AppState; use Magento\Framework\DB\Transaction as DbTransaction; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\Filesystem\Driver\File; @@ -77,6 +78,11 @@ class Data extends AbstractHelper */ private $dateTimeFactory; + /** + * @var AppState + */ + private $appState; + /** * @var ScopeConfigInterface */ @@ -150,7 +156,8 @@ public function __construct( OrderNotifier $orderNotifier, AssetRepository $assetRepository, CategoryRepository $categoryRepository, - \Xendit\M2Invoice\Helper\PhoneNumberFormat $phoneNumberFormatHelper + \Xendit\M2Invoice\Helper\PhoneNumberFormat $phoneNumberFormatHelper, + AppState $appState ) { $this->storeManager = $storeManager; $this->xendit = $xendit; @@ -168,6 +175,7 @@ public function __construct( $this->assetRepository = $assetRepository; $this->categoryRepository = $categoryRepository; $this->phoneNumberFormatHelper = $phoneNumberFormatHelper; + $this->appState = $appState; parent::__construct($context); } diff --git a/docker-magento/docker-compose.yml b/docker-magento/docker-compose.yml index e09447b..b365372 100644 --- a/docker-magento/docker-compose.yml +++ b/docker-magento/docker-compose.yml @@ -32,8 +32,6 @@ services: environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=magento - volumes: - - db-data:/var/lib/mysql phpmyadmin: container_name: phpmyadmin restart: always diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 0fbb058..c9235d0 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -131,6 +131,14 @@ Xendit\M2Invoice\Block\Adminhtml\System\Config\DeveloperModeField + + + + + + Xendit\M2Invoice\Block\Adminhtml\System\Config\DeveloperModeField +