Skip to content

Commit

Permalink
Added OCBC digital along with image and tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Aashish committed Sep 13, 2023
1 parent 025c46a commit 6f02182
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 2 deletions.
Binary file added assets/images/ocbc-digital.png
Loading
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
87 changes: 87 additions & 0 deletions includes/gateway/class-omise-payment-ocbc-digital.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?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)
{
$currency = $order->get_currency();

return OmiseCharge::create([
'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',
]);
return apply_filters( 'woocommerce_gateway_icon', $icon, $this->id );
}
}
1 change: 1 addition & 0 deletions omise-woocommerce.php
Original file line number Diff line number Diff line change
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
2 changes: 0 additions & 2 deletions tests/unit/includes/gateway/class-omise-offsite-test.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ function wp_kses() {}
if (!function_exists('add_action')) {
function add_action() {}
}

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

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?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';
$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);
}

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

0 comments on commit 6f02182

Please sign in to comment.