Skip to content

Commit

Permalink
Merge pull request #402 from omise/release-v5.4.0
Browse files Browse the repository at this point in the history
Release v5.4.0
  • Loading branch information
aashishgurung committed Sep 21, 2023
2 parents 95d5fcf + f4acc1c commit 021d7ce
Show file tree
Hide file tree
Showing 8 changed files with 220 additions and 5 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# CHANGELOG

### [v5.4.0 _(Sep 21, 2023)_](https://github.com/omise/omise-woocommerce/releases/tag/v5.4.0)
- Added OCBC Digital for Singapore PSP. (PR [#401](https://github.com/omise/omise-woocommerce/pull/401))

### [v5.3.1 _(Sep 05, 2023)_](https://github.com/omise/omise-woocommerce/releases/tag/v5.3.1)
- Fixed capabilities api calling on every pages. (PR [#398](https://github.com/omise/omise-woocommerce/pull/398))

Expand Down
Binary file added assets/images/ocbc-digital.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions includes/class-omise-payment-factory.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class Omise_Payment_Factory {
'Omise_Payment_TouchNGo',
'Omise_Payment_RabbitLinePay',
'Omise_Payment_OCBC_PAO',
'Omise_Payment_OCBC_Digital',
'Omise_Payment_GrabPay',
'Omise_Payment_GooglePay',
'Omise_Payment_Boost',
Expand Down
98 changes: 98 additions & 0 deletions includes/gateway/class-omise-payment-ocbc-digital.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?php
defined( 'ABSPATH' ) or die( 'No direct script access allowed.' );

class Omise_Payment_OCBC_Digital extends Omise_Payment_Offsite {
public function __construct() {
parent::__construct();

$this->id = 'omise_ocbc';
$this->has_fields = false;
$this->method_title = __( 'Opn Payments OCBC Digital', 'omise' );
$this->method_description = __( 'Accept payment through <strong>OCBC Digital</strong> via Opn Payments payment gateway.', 'omise' );
$this->supports = [ 'products', 'refunds' ];

$this->init_form_fields();
$this->init_settings();

$this->title = $this->get_option( 'title' );
$this->description = $this->get_option( 'description' );
$this->restricted_countries = [ 'SG' ];
$this->source_type = 'mobile_banking_ocbc';

add_action( 'woocommerce_api_' . $this->id . '_callback', 'Omise_Callback::execute' );
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, [ $this, 'process_admin_options' ] );
add_action( 'woocommerce_order_action_' . $this->id . '_sync_payment', [ $this, 'sync_payment' ] );
}

/**
* @see WC_Settings_API::init_form_fields()
* @see woocommerce/includes/abstracts/abstract-wc-settings-api.php
*/
public function init_form_fields() {
$this->form_fields = [
'enabled' => [
'title' => __( 'Enable/Disable', 'omise' ),
'type' => 'checkbox',
'label' => __( 'Enable Opn Payments OCBC Digital', 'omise' ),
'default' => 'no'
],

'title' => [
'title' => __( 'Title', 'omise' ),
'type' => 'text',
'description' => __( 'This controls the title the user sees during checkout.', 'omise' ),
'default' => __( 'OCBC Digital', 'omise' ),
],

'description' => [
'title' => __( 'Description', 'omise' ),
'type' => 'textarea',
'description' => __( 'This controls the description the user sees during checkout.', 'omise' )
],
];
}

/**
* @inheritdoc
*/
public function charge($order_id, $order)
{
return OmiseCharge::create($this->get_charge_request($order_id, $order));
}

/**
* @order_id integer
* @order object
*/
public function get_charge_request($order_id, $order)
{
$currency = $order->get_currency();

return [
'amount' => Omise_Money::to_subunit($order->get_total(), $currency),
'currency' => $currency,
'description' => apply_filters('omise_charge_params_description', 'WooCommerce Order id ' . $order_id, $order),
'source' => [
'type' => $this->source_type,
'platform_type' => Omise_Util::get_platform_type( wc_get_user_agent() )
],
'return_uri' => $this->getRedirectUrl("{$this->id}_callback", $order_id, $order),
'metadata' => $this->getMetadata($order_id, $order)
];
}

/**
* Get icons
*
* @see WC_Payment_Gateway::get_icon()
*/
public function get_icon()
{
$icon = Omise_Image::get_image([
'file' => 'ocbc-digital.png',
'alternate_text' => 'OCBC Digital',
'width' => 60,
]);
return apply_filters( 'woocommerce_gateway_icon', $icon, $this->id );
}
}
5 changes: 3 additions & 2 deletions omise-woocommerce.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.3.1
* Version: 5.4.0
* Author: Opn Payments and contributors
* Author URI: https://github.com/omise/omise-woocommerce/graphs/contributors
* Text Domain: omise
Expand All @@ -22,7 +22,7 @@ class Omise
*
* @var string
*/
public $version = '5.3.1';
public $version = '5.4.0';

/**
* The Omise Instance.
Expand Down Expand Up @@ -213,6 +213,7 @@ private function include_classes()
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-googlepay.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-grabpay.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-ocbc-pao.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-ocbc-digital.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-boost.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-duitnow-obw.php';
require_once OMISE_WOOCOMMERCE_PLUGIN_PATH . '/includes/gateway/class-omise-payment-duitnow-qr.php';
Expand Down
6 changes: 5 additions & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ 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.0.2
Stable tag: 5.3.1
Stable tag: 5.4.0
License: MIT
License URI: https://opensource.org/licenses/MIT

Expand Down Expand Up @@ -34,6 +34,10 @@ From there:

== Changelog ==

= 5.4.0 =

- Added OCBC Digital for Singapore PSP. (PR [#401](https://github.com/omise/omise-woocommerce/pull/401))

= 5.3.1 =

- Fixed capabilities api calling on every pages. (PR [#398](https://github.com/omise/omise-woocommerce/pull/398))
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/includes/gateway/class-omise-offsite-test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public function setUp(): void
$offsite->shouldReceive('init_settings');
$offsite->shouldReceive('get_option');
$offsite->shouldReceive('get_provider');
$offsite->shouldReceive('getRedirectUrl');
$offsite->shouldReceive('getMetadata');

// mocking WP built-in functions
if (!function_exists('wp_kses')) {
Expand All @@ -20,8 +22,6 @@ function wp_kses() {}
if (!function_exists('add_action')) {
function add_action() {}
}

require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-alipayplus.php';
}

/**
Expand Down
108 changes: 108 additions & 0 deletions tests/unit/includes/gateway/class-omise-payment-ocbc-digital-test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?php

require_once __DIR__ . '/class-omise-offsite-test.php';

class Omise_Payment_OCBC_Digital_Test extends Offsite_Test
{
private $obj;

public function setUp(): void
{
parent::setUp();
require_once __DIR__ . '/../../../../includes/gateway/class-omise-payment-ocbc-digital.php';
require_once __DIR__ . '/../../../../includes/classes/class-omise-image.php';
$this->obj = new Omise_Payment_OCBC_Digital();
}

public function tearDown(): void
{
// destroy object and clear memory
unset($this->obj);
}

/**
* @test
*/
public function restrictedCountriesHasRequiredCountries()
{
$expectedCountries = ['SG'];
$this->assertEqualsCanonicalizing($expectedCountries, $this->obj->restricted_countries);
}

/**
* @test
*/
public function sourceTypeIsCorrect()
{
$this->assertEquals('mobile_banking_ocbc', $this->obj->source_type);
}

/**
* @test
*/
public function methodTitleIsCorrect()
{
$this->assertEquals('Opn Payments OCBC Digital', $this->obj->method_title);
}

/**
* @test
*/
public function supportsIsCorrect()
{
$this->assertEqualsCanonicalizing([ 'products', 'refunds' ], $this->obj->supports);
}

/**
* @test
*/
public function getIconReturnsCorrectImageLink()
{
// mocking WP built-in functions
if (!function_exists('plugins_url')) {
function plugins_url() {
return "http://localhost";
}
}

if (!function_exists('apply_filters')) {
function apply_filters() {
return "http://localhost/image.png";
}
}

$result = $this->obj->get_icon();

$this->assertEquals("http://localhost/image.png", $result);
}

/**
* @test
*/
public function getChargeRequestReturnsCorrectData()
{
// Create a mock of the $order object
$orderMock = Mockery::mock('WC_Order');
$expectedCurrency = 'SGD';
$expectedAmount = 1000000; // in subunits

// Define expectations for the mock
$orderMock->shouldReceive('get_currency')
->andReturn($expectedCurrency);
$orderMock->shouldReceive('get_total')
->andReturn($expectedAmount/100); // in units

if (!function_exists('wc_get_user_agent')) {
function wc_get_user_agent() {
return "Chrome Web";
}
}

$expectedSourceType = 'mobile_banking_ocbc';
$order_id = "123";
$result = $this->obj->get_charge_request($order_id, $orderMock);
$this->assertEquals($expectedAmount, $result['amount']);
$this->assertEquals($expectedCurrency, $result['currency']);
$this->assertEquals($expectedSourceType, $result['source']['type']);
}
}

0 comments on commit 021d7ce

Please sign in to comment.