From 839e8bd8c672e6faf6528e14b4302e555ddd398a Mon Sep 17 00:00:00 2001 From: Aashish Gurung <101558497+aashishgurung@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:30:09 +0700 Subject: [PATCH 1/2] Support Google fonts other than Poppins (#416) * Added fields to enter custom font name and URL * Removed code related to custom URL * Removed error_log * Updated message under custom font name field. * Update custom font name message under input field. * Added unit tests. * Removed extra empty line. * Defined a constant for Other and improve code consistency. * Removed the message under font name * change the message under custom font name. * Added OMISE_CUSTOM_FONT_OTHER in form.php and my-card.php * Added requried attribute if other is selected. * Removed circular * Removed unnecessary Mockery:close from child classes. * Changed OPN to Opn * Change payments to Payments. * removed accidentally added URL. * Added Brain package to mock WP functions. * Renamed custom_sf_ to omise_sf. --------- Co-authored-by: Aashish --- assets/javascripts/card-form-customization.js | 23 ++++ assets/javascripts/omise-embedded-card.js | 10 +- composer.json | 3 +- ...ass-omise-page-card-form-customization.php | 3 + .../omise-page-card-form-customization.php | 15 ++- includes/admin/views/omise-page-settings.php | 2 +- .../class-omise-payment-creditcard.php | 4 +- languages/omise-ja.po | 4 +- languages/omise.pot | 4 +- templates/myaccount/my-card.php | 1 + templates/payment/form.php | 1 + ...mise-page-card-form-customization-test.php | 113 ++++++++++++++++++ .../abstract-omise-payment-base-card-test.php | 8 ++ .../abstract-omise-payment-offline-test.php | 1 - .../includes/gateway/bootstrap-test-setup.php | 29 +++-- .../gateway/class-omise-offsite-test.php | 9 -- .../class-omise-payment-creditcard-test.php | 65 ++++++++++ ...ass-omise-payment-internetbanking-test.php | 1 - .../class-omise-payment-konbini-test.php | 1 + .../class-omise-payment-ocbc-digital-test.php | 11 +- .../class-omise-payment-promptpay-test.php | 3 +- 21 files changed, 264 insertions(+), 47 deletions(-) create mode 100644 tests/unit/includes/admin/class-omise-page-card-form-customization-test.php create mode 100644 tests/unit/includes/gateway/class-omise-payment-creditcard-test.php diff --git a/assets/javascripts/card-form-customization.js b/assets/javascripts/card-form-customization.js index b87123e4..1709f1c7 100644 --- a/assets/javascripts/card-form-customization.js +++ b/assets/javascripts/card-form-customization.js @@ -58,6 +58,28 @@ function getDesignFormValues() { return formValues; } +function handleFontChange() { + const fontName = document.getElementById('omise_sf_font_name'); + + if (fontName.value === OMISE_CUSTOM_FONT_OTHER) { + document.getElementById('omise_sf_custom_font_name').style.display = null + } + + fontName.addEventListener('change', (event) => { + const customFontName = document.getElementById('omise_sf_custom_font_name'); + const inputCustomFont = customFontName.querySelector('input') + + if (event.target.value === OMISE_CUSTOM_FONT_OTHER) { + customFontName.style.display = null; + inputCustomFont.required = true; + } else { + customFontName.style.display = 'none'; + inputCustomFont.value = ''; + inputCustomFont.required = false; + } + }); +} + function initOmiseCardForm() { const customCardFormTheme = CARD_FORM_THEME ?? 'light'; document.querySelector('.omise-modal .content').style.background = @@ -91,3 +113,4 @@ document.getElementById('omise-modal').addEventListener('click', (event) => { setDesignFormValues(); handleColorInputChanges(); +handleFontChange(); diff --git a/assets/javascripts/omise-embedded-card.js b/assets/javascripts/omise-embedded-card.js index af0c676c..973ffabb 100644 --- a/assets/javascripts/omise-embedded-card.js +++ b/assets/javascripts/omise-embedded-card.js @@ -25,6 +25,14 @@ function showOmiseEmbeddedCardForm({ } element.style.height = iframeElementHeight + 'px' + let fontName = font.name + const isCustomFontSet = font.name.toLowerCase().trim() === OMISE_CUSTOM_FONT_OTHER.toLowerCase() + const isCustomFontEmpty = font.custom_name.trim() === '' + + if (isCustomFontSet && !isCustomFontEmpty) { + fontName = font.custom_name.trim() + } + OmiseCard.configure({ publicKey: publicKey, element, @@ -34,7 +42,7 @@ function showOmiseEmbeddedCardForm({ customCardFormHideRememberCard: hideRememberCard ?? false, customCardFormBrandIcons: brandIcons ?? null, style: { - fontFamily: font.name, + fontFamily: fontName, fontSize: font.size, input: { height: input.height, diff --git a/composer.json b/composer.json index 7c57eab3..4b78e989 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,8 @@ "license": "MIT", "require-dev": { "phpunit/phpunit": "^5.7 || ^9.5", - "mockery/mockery": "^1.6" + "mockery/mockery": "^1.6", + "brain/monkey": "^2.6" }, "scripts": { "test": "vendor/bin/phpunit --testdox --colors" diff --git a/includes/admin/class-omise-page-card-form-customization.php b/includes/admin/class-omise-page-card-form-customization.php index ce325705..8a446482 100644 --- a/includes/admin/class-omise-page-card-form-customization.php +++ b/includes/admin/class-omise-page-card-form-customization.php @@ -27,6 +27,7 @@ private function get_light_theme() 'font' => [ 'name' => 'Poppins', 'size' => 16, + 'custom_name' => '' ], 'input' => [ 'height' => '44px', @@ -51,6 +52,7 @@ private function get_dark_theme() 'font' => [ 'name' => 'Poppins', 'size' => 16, + 'custom_name' => '' ], 'input' => [ 'height' => '44px', @@ -110,6 +112,7 @@ protected function save($data) $options[$componentKey][$key] = sanitize_text_field($data[$componentKey][$key]); } } + update_option(self::PAGE_NAME, $options); $this->add_message('message', "Update has been saved!"); } diff --git a/includes/admin/views/omise-page-card-form-customization.php b/includes/admin/views/omise-page-card-form-customization.php index d12e44d6..fdb53187 100644 --- a/includes/admin/views/omise-page-card-form-customization.php +++ b/includes/admin/views/omise-page-card-form-customization.php @@ -4,6 +4,7 @@ $cardFormTheme = $omiseCardGateway->get_option('card_form_theme'); $cardIcons = $omiseCardGateway->get_card_icons(); $publicKey = Omise()->settings()->public_key(); + $customFontOther = 'Other'; ?> @@ -24,11 +25,18 @@ Font Name - - + -
Match font used in form with your selected font
+ + + + + + + +
Specify other font name (note: only Google Fonts supported)
@@ -189,6 +197,7 @@ window.DEFAULT_FORM_DESIGN = JSON.parse(``); window.CARD_BRAND_ICONS = JSON.parse(``); window.LOCALE = ``; + window.OMISE_CUSTOM_FONT_OTHER = ``; diff --git a/includes/admin/views/omise-page-settings.php b/includes/admin/views/omise-page-settings.php index b0975c60..285ea3c1 100644 --- a/includes/admin/views/omise-page-settings.php +++ b/includes/admin/views/omise-page-settings.php @@ -139,7 +139,7 @@ Opn Payments dashboard (HTTPS only).', 'omise' ), + __( 'Unless dynamic webhooks are enabled, you must add the URL above as a new endpoint on your Opn Payments dashboard (HTTPS only).', 'omise' ), [ 'a' => ['href' => []], ], diff --git a/includes/gateway/class-omise-payment-creditcard.php b/includes/gateway/class-omise-payment-creditcard.php index bf78ccbb..09c63c10 100644 --- a/includes/gateway/class-omise-payment-creditcard.php +++ b/includes/gateway/class-omise-payment-creditcard.php @@ -15,7 +15,7 @@ public function __construct() $this->has_fields = true; $this->method_title = __( 'Opn Payments Credit / Debit Card', 'omise' ); $this->method_description = wp_kses( - __( 'Accept payment through Credit / Debit Card via Opn Payments payment gateway.', 'omise' ), + __( 'Accept payment through Credit / Debit Card via Opn Payments.', 'omise' ), array( 'strong' => array() ) @@ -148,7 +148,7 @@ function init_form_fields() { 'css' => Omise_Card_Image::get_css(), 'default' => Omise_Card_Image::get_amex_default_display(), 'description' => wp_kses( - __( 'This only controls the icons displayed on the checkout page.
It is not related to card processing on Omise payment gateway.', 'omise' ), + __( 'This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments.', 'omise' ), array( 'br' => array() ) ) ) diff --git a/languages/omise-ja.po b/languages/omise-ja.po index 61bf96ee..a07fface 100644 --- a/languages/omise-ja.po +++ b/languages/omise-ja.po @@ -127,7 +127,7 @@ msgid "Opn Payments Credit / Debit Card" msgstr "Opn Payments クレジットカード / デビットカード" #: includes/gateway/class-omise-payment-creditcard.php:23 -msgid "Accept payment through Credit / Debit Card via Opn Payments payment gateway." +msgid "Accept payment through Credit / Debit Card via Opn Payments." msgstr "Opn Payments決済ゲートウェイを経由してクレジットカード/デビットカード決済を受け付けます。" #: includes/gateway/class-omise-payment-creditcard.php:58 @@ -175,7 +175,7 @@ msgid "Supported card icons" msgstr "ご利用可能ブランド" #: includes/gateway/class-omise-payment-creditcard.php:134 -msgid "This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments payment gateway." +msgid "This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments." msgstr "ご提供可能なカードブランドのアイコンを決済画面に表示できます。
本項目の選択内容は、カード処理システムには影響いたしません。" #: includes/gateway/class-omise-payment-creditcard.php:191 diff --git a/languages/omise.pot b/languages/omise.pot index b1c5a5fd..2affd5b9 100644 --- a/languages/omise.pot +++ b/languages/omise.pot @@ -126,7 +126,7 @@ msgid "Opn Payments Credit / Debit Card" msgstr "Opn Payments クレジットカード / デビットカード" #: includes/gateway/class-omise-payment-creditcard.php:23 -msgid "Accept payment through Credit / Debit Card via Opn Payments payment gateway." +msgid "Accept payment through Credit / Debit Card via Opn Payments." msgstr "Opn Payments決済ゲートウェイを経由してクレジットカード/デビットカード決済を受け付けます。" #: includes/gateway/class-omise-payment-creditcard.php:58 @@ -174,7 +174,7 @@ msgid "Supported card icons" msgstr "ご利用可能ブランド" #: includes/gateway/class-omise-payment-creditcard.php:134 -msgid "This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments payment gateway." +msgid "This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments." msgstr "ご提供可能なカードブランドのアイコンを決済画面に表示できます。
本項目の選択内容は、カード処理システムには影響いたしません。" #: includes/gateway/class-omise-payment-creditcard.php:191 diff --git a/templates/myaccount/my-card.php b/templates/myaccount/my-card.php index 34ca2546..40049982 100644 --- a/templates/myaccount/my-card.php +++ b/templates/myaccount/my-card.php @@ -56,5 +56,6 @@ class='button delete_card' window.FORM_DESIGN = JSON.parse(``); window.CARD_BRAND_ICONS = JSON.parse(``); window.LOCALE = ``; + window.OMISE_CUSTOM_FONT_OTHER = 'Other'; diff --git a/templates/payment/form.php b/templates/payment/form.php index 67057da1..4c2e4e95 100644 --- a/templates/payment/form.php +++ b/templates/payment/form.php @@ -60,5 +60,6 @@ window.FORM_DESIGN = JSON.parse(``); window.LOCALE = ``; window.HIDE_REMEMBER_CARD = `` == 'yes' ? true : false; + window.OMISE_CUSTOM_FONT_OTHER = 'Other'; diff --git a/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php b/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php new file mode 100644 index 00000000..898b22db --- /dev/null +++ b/tests/unit/includes/admin/class-omise-page-card-form-customization-test.php @@ -0,0 +1,113 @@ + [ + 'name' => 'Poppins', + 'size' => 16, + 'custom_name' => '' + ], + 'input' => [ + 'height' => '44px', + 'border_radius' => '4px', + 'border_color' => '#ced3de', + 'active_border_color' => '#1451cc', + 'background_color' => '#ffffff', + 'label_color' => '#212121', + 'text_color' => '#212121', + 'placeholder_color' => '#98a1b2', + ], + 'checkbox' => [ + 'text_color' => '#1c2433', + 'theme_color' => '#1451cc', + ] + ]; + + $obj = Omise_Page_Card_From_Customization::get_instance(); + + // calling private method + $themeValues = $this->invokeMethod($obj, 'get_light_theme', []); + + $this->assertEqualsCanonicalizing($expected, $themeValues); + } + + /** + * @test + */ + public function testGetDarkTheme() + { + $expected = [ + 'font' => [ + 'name' => 'Poppins', + 'size' => 16, + 'custom_name' => '' + ], + 'input' => [ + 'height' => '44px', + 'border_radius' => '4px', + 'border_color' => '#475266', + 'active_border_color' => '#475266', + 'background_color' => '#131926', + 'label_color' => '#E6EAF2', + 'text_color' => '#ffffff', + 'placeholder_color' => '#DBDBDB', + ], + 'checkbox' => [ + 'text_color' => '#E6EAF2', + 'theme_color' => '#1451CC', + ] + ]; + + $obj = Omise_Page_Card_From_Customization::get_instance(); + + // calling private method + $themeValues = $this->invokeMethod($obj, 'get_dark_theme', []); + + $this->assertEqualsCanonicalizing($expected, $themeValues); + } + + /** + * Call protected/private method of a class. + * + * @param object $object Instantiated object that we will run method on. + * @param string $methodName Method name to call + * @param array $parameters Array of parameters to pass into method. + * + * @return mixed Method return. + */ + public function invokeMethod($object, $methodName, array $parameters = []) + { + $reflection = new \ReflectionClass(get_class($object)); + $method = $reflection->getMethod($methodName); + $method->setAccessible(true); + + return $method->invokeArgs($object, $parameters); + } +} diff --git a/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php b/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php index 8f4fb28b..cff4a717 100644 --- a/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php +++ b/tests/unit/includes/gateway/abstract-omise-payment-base-card-test.php @@ -42,6 +42,14 @@ public function returnThis() }; } + /** + * close mockery after tests are done + */ + public function tearDown(): void + { + Mockery::close(); + } + public function getOrderMock($expectedAmount, $expectedCurrency) { // Create a mock of the $order object diff --git a/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php b/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php index dcb1ed52..c2a7355e 100644 --- a/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php +++ b/tests/unit/includes/gateway/abstract-omise-payment-offline-test.php @@ -8,6 +8,5 @@ public function setUp(): void { parent::setUp(); Mockery::mock('alias:Omise_Payment')->makePartial(); - require_once __DIR__ . '/../../../../includes/gateway/abstract-omise-payment-offline.php'; } } diff --git a/tests/unit/includes/gateway/bootstrap-test-setup.php b/tests/unit/includes/gateway/bootstrap-test-setup.php index 8ee06aa4..b018c35e 100644 --- a/tests/unit/includes/gateway/bootstrap-test-setup.php +++ b/tests/unit/includes/gateway/bootstrap-test-setup.php @@ -1,6 +1,7 @@ null, + 'add_action' => null, + ] ); + } - if (!function_exists('add_action')) { - function add_action() {} - } + /** + * close mockery after tests are done + */ + public function tearDown(): void + { + Brain\Monkey\tearDown(); + Mockery::close(); } public function getOrderMock($expectedAmount, $expectedCurrency) @@ -52,14 +59,6 @@ public function getOrderMock($expectedAmount, $expectedCurrency) return $orderMock; } - /** - * close mockery after tests are done - */ - public function tearDown(): void - { - Mockery::close(); - } - /** * @runInSeparateProcess */ diff --git a/tests/unit/includes/gateway/class-omise-offsite-test.php b/tests/unit/includes/gateway/class-omise-offsite-test.php index 79f06b59..f6918934 100644 --- a/tests/unit/includes/gateway/class-omise-offsite-test.php +++ b/tests/unit/includes/gateway/class-omise-offsite-test.php @@ -24,15 +24,6 @@ public function setUp(): void unset($offsite); } - /** - * close mockery after tests are done - */ - public function tearDown(): void - { - parent::tearDown(); - Mockery::close(); - } - public function getChargeTest($classObj) { $expectedAmount = 999999; diff --git a/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php b/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php new file mode 100644 index 00000000..9d5a4cef --- /dev/null +++ b/tests/unit/includes/gateway/class-omise-payment-creditcard-test.php @@ -0,0 +1,65 @@ +shouldReceive('init_settings'); + $omisePaymentMock->shouldReceive('get_option'); + $omisePaymentMock->shouldReceive('is_test') + ->andReturn(true); + + $omiseCardImage = Mockery::mock('alias:Omise_Card_Image'); + $omiseCardImage->shouldReceive('get_css')->times(6); + $omiseCardImage->shouldReceive('get_visa_image')->once(); + $omiseCardImage->shouldReceive('get_visa_default_display')->once(); + $omiseCardImage->shouldReceive('get_mastercard_image')->once(); + $omiseCardImage->shouldReceive('get_mastercard_default_display')->once(); + $omiseCardImage->shouldReceive('get_jcb_image')->once(); + $omiseCardImage->shouldReceive('get_jcb_default_display')->once(); + $omiseCardImage->shouldReceive('get_diners_image')->once(); + $omiseCardImage->shouldReceive('get_diners_default_display')->once(); + $omiseCardImage->shouldReceive('get_amex_image')->once(); + $omiseCardImage->shouldReceive('get_amex_default_display')->once(); + $omiseCardImage->shouldReceive('get_discover_image')->once(); + $omiseCardImage->shouldReceive('get_discover_default_display')->once(); + + require_once __DIR__ . '/../../../../includes/gateway/traits/charge-request-builder-trait.php'; + require_once __DIR__ . '/../../../../includes/gateway/abstract-omise-payment-base-card.php'; + require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-creditcard.php'; + } + + public function tearDown(): void + { + Brain\Monkey\tearDown(); + Mockery::close(); + } + + /** + * @test + */ + public function testClassIsInitializedProperly() + { + Brain\Monkey\Functions\stubs( [ + 'wp_kses' => null, + ] ); + $creditCard = new Omise_Payment_Creditcard; + + $this->assertEquals($creditCard->source_type, 'credit_card'); + $this->assertEquals( + $creditCard->method_description, + 'Accept payment through Credit / Debit Card via Opn Payments.' + ); + + $this->assertEquals( + $creditCard->form_fields['accept_amex']['description'], + 'This only controls the icons displayed on the checkout page.
It is not related to card processing on Opn Payments.' + ); + } +} diff --git a/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php b/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php index 56e54e9b..37e44b68 100644 --- a/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-internetbanking-test.php @@ -8,7 +8,6 @@ public function setUp(): void { $this->sourceType = 'fpx'; parent::setUp(); - // require_once __DIR__ . '/../../../../includes/backends/class-omise-backend-fpx.php'; require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-internetbanking.php'; } diff --git a/tests/unit/includes/gateway/class-omise-payment-konbini-test.php b/tests/unit/includes/gateway/class-omise-payment-konbini-test.php index 1c11d67f..a29dcf4f 100644 --- a/tests/unit/includes/gateway/class-omise-payment-konbini-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-konbini-test.php @@ -7,6 +7,7 @@ class Omise_Payment_Konbini_Test extends Omise_Payment_Offline_Test public function setUp(): void { + parent::setUp(); // Mocking the parent class $offline = Mockery::mock('overload:Omise_Payment_Offline'); $offline->shouldReceive('init_settings'); diff --git a/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php b/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php index d4eeec07..652ae3fa 100644 --- a/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php @@ -21,12 +21,6 @@ function plugins_url() { } } - if (!function_exists('apply_filters')) { - function apply_filters() { - return "http://localhost/image.png"; - } - } - if (!function_exists('wc_get_user_agent')) { function wc_get_user_agent() { return "Chrome Web"; @@ -80,7 +74,10 @@ public function supportsIsCorrect() public function getIconReturnsCorrectImageLink() { $result = $this->obj->get_icon(); - $this->assertEquals("http://localhost/image.png", $result); + $this->assertEquals( + "OCBC Digital", + $result + ); } /** diff --git a/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php b/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php index bda6a6a2..a053b9a8 100644 --- a/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php +++ b/tests/unit/includes/gateway/class-omise-payment-promptpay-test.php @@ -1,7 +1,5 @@ Date: Wed, 15 Nov 2023 16:19:42 +0700 Subject: [PATCH 2/2] Updated metadata for v5.6.0 --- CHANGELOG.md | 3 +++ omise-woocommerce.php | 4 ++-- readme.txt | 8 ++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 090bcbac..b1ea1ab4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # CHANGELOG +### [v5.6.0 _(Nov 15, 2023)_](https://github.com/omise/omise-woocommerce/releases/tag/v5.6.0) +- Support Google fonts other than Poppins. (PR [#416](https://github.com/omise/omise-woocommerce/pull/416)) + ### [v5.5.1 _(Nov 2, 2023)_](https://github.com/omise/omise-woocommerce/releases/tag/v5.5.1) - Fix mobile banking issue. (PR [#413](https://github.com/omise/omise-woocommerce/pull/413)) diff --git a/omise-woocommerce.php b/omise-woocommerce.php index 36636ace..2fd51ffc 100644 --- a/omise-woocommerce.php +++ b/omise-woocommerce.php @@ -4,7 +4,7 @@ * Plugin Name: Opn Payments * Plugin URI: https://www.omise.co/woocommerce * Description: Opn Payments is a WordPress plugin designed specifically for WooCommerce. The plugin adds support for Opn Payments Payment Gateway's payment methods to WooCommerce. - * Version: 5.5.1 + * Version: 5.6.0 * Author: Opn Payments and contributors * Author URI: https://github.com/omise/omise-woocommerce/graphs/contributors * Text Domain: omise @@ -22,7 +22,7 @@ class Omise * * @var string */ - public $version = '5.5.1'; + public $version = '5.6.0'; /** * The Omise Instance. diff --git a/readme.txt b/readme.txt index 4fe31667..a27f1caa 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: Opn Payments Tags: opn payments, payment, payment gateway, woocommerce plugin, omise, opn, installment, internet banking, alipay, paynow, truemoney wallet, woocommerce payment Requires at least: 4.3.1 -Tested up to: 6.3.2 -Stable tag: 5.5.1 +Tested up to: 6.4.0 +Stable tag: 5.6.0 License: MIT License URI: https://opensource.org/licenses/MIT @@ -34,6 +34,10 @@ From there: == Changelog == += 5.6.0 = + +- Support Google fonts other than Poppins. (PR [#416](https://github.com/omise/omise-woocommerce/pull/416)) + = 5.5.1 = - Fix mobile banking issue. (PR [#413](https://github.com/omise/omise-woocommerce/pull/413))