Skip to content

Commit

Permalink
Enhancements display payment options (#361)
Browse files Browse the repository at this point in the history
* update prevent save

* fix renderer logic

* 🆙 date renderer to using capabilities api 📈

* some clean up

* Clean up v1 🧼

* fix M2 Coding standard

* fix M2 Coding standard v2

* fix M2 Coding standard v3

* fix M2 Coding standard v4

* fix M2 Coding standard v5

* fix M2 Coding standard v6

* update

* fix following comment

* fix wrong replace value

* forgot to remove unused value

* Update Helper/OmiseHelper.php

Co-authored-by: Pariwat Hongladarom <61586978+hpariwat@users.noreply.github.com>

* update following comment

* move to function

* fix m2 v7

* fix m2 v8

* Update Plugin/ConfigSectionPaymentPlugin.php

Co-authored-by: Ponpol Wongsapjinda <donutzue@gmail.com>

* fix some bug

* fix after merge

* Add rms wallet (#366)

* some change

* some config

* fix

* add order id

* fix format

* finish v1

* finish v2

* make tng generic

* some fix

* some missing update

* fix name Maybank QR

* update & add logo for RMS & some other payment

* Revert "fix name Maybank QR"

This reverts commit 3357655.

* update Touch`n Go eWallet display name

* update duitnow display name

* make 2.28.0.alpha version

* fix following sonar

* remove comment code smell

* add support multi-store

* fix m2 v1

* fix m2 v2

* fix m2 v3

* fix m2 v4

* final fix m2

Co-authored-by: Pariwat Hongladarom <61586978+hpariwat@users.noreply.github.com>
Co-authored-by: Ponpol Wongsapjinda <donutzue@gmail.com>
  • Loading branch information
3 people authored Aug 29, 2022
1 parent 2d6c0fb commit 95f4e2d
Show file tree
Hide file tree
Showing 68 changed files with 1,706 additions and 122 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.buildpath
.project
.settings/
.idea/
.phpunit.cache
.phpunit.result.cache
.DS_Store
Expand Down
25 changes: 23 additions & 2 deletions Controller/Callback/Offsite.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
use Omise\Payment\Model\Config\Rabbitlinepay;
use Omise\Payment\Model\Config\Ocbcpao;
use Omise\Payment\Model\Config\Grabpay;
use Omise\Payment\Model\Config\Boost;
use Omise\Payment\Model\Config\DuitnowOBW;
use Omise\Payment\Model\Config\DuitnowQR;
use Omise\Payment\Model\Config\MaybankQR;
use Omise\Payment\Model\Config\Shopeepay;
use Omise\Payment\Model\Config\Touchngo;
use Magento\Framework\Exception\LocalizedException;
use Omise\Payment\Helper\OmiseHelper;
use Omise\Payment\Helper\OmiseEmailHelper;
Expand Down Expand Up @@ -211,8 +217,8 @@ public function execute()
case Alipayplus::KAKAOPAY_CODE:
$dispPaymentMethod = "Kakao Pay (Alipay+ Partner)";
break;
case Alipayplus::TOUCHNGO_CODE:
$dispPaymentMethod = "TNG eWallet (Alipay+ Partner)";
case Touchngo::CODE:
$dispPaymentMethod = "Touch`n Go eWallet";
break;
case Mobilebanking::CODE:
$dispPaymentMethod = "Mobile Banking";
Expand All @@ -226,6 +232,21 @@ public function execute()
case Grabpay::CODE:
$dispPaymentMethod = "GrabPay";
break;
case Boost::CODE:
$dispPaymentMethod = "Boost";
break;
case DuitnowOBW::CODE:
$dispPaymentMethod = "DuitNow Online Banking/Wallets";
break;
case DuitnowQR::CODE:
$dispPaymentMethod = "DuitNow QR";
break;
case MaybankQR::CODE:
$dispPaymentMethod = "Maybank QR";
break;
case Shopeepay::CODE:
$dispPaymentMethod = "ShopeePay";
break;
}

// Add transaction.
Expand Down
5 changes: 5 additions & 0 deletions Cron/OrderSyncStatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ class OrderSyncStatus
"omise_offsite_rabbitlinepay",
"omise_offsite_ocbcpao",
"omise_offsite_grabpay",
"omise_offsite_boost",
"omise_offsite_duitnowobw",
"omise_offsite_duitnowqr",
"omise_offsite_maybankqr",
"omise_offsite_shopeepay",
];

/**
Expand Down
37 changes: 36 additions & 1 deletion Gateway/Request/APMBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,16 @@
use Omise\Payment\Model\Config\Rabbitlinepay;
use Omise\Payment\Model\Config\Ocbcpao;
use Omise\Payment\Model\Config\Grabpay;
use Omise\Payment\Model\Config\Boost;
use Omise\Payment\Model\Config\DuitnowOBW;
use Omise\Payment\Model\Config\DuitnowQR;
use Omise\Payment\Model\Config\MaybankQR;
use Omise\Payment\Model\Config\Shopeepay;
use Omise\Payment\Model\Config\Touchngo;

use Omise\Payment\Observer\ConveniencestoreDataAssignObserver;
use Omise\Payment\Observer\FpxDataAssignObserver;
use Omise\Payment\Observer\DuitnowOBWDataAssignObserver;
use Omise\Payment\Observer\InstallmentDataAssignObserver;
use Omise\Payment\Observer\MobilebankingDataAssignObserver;
use Omise\Payment\Observer\InternetbankingDataAssignObserver;
Expand Down Expand Up @@ -211,7 +218,7 @@ public function build(array $buildSubject)
self::PLATFORM_TYPE => $this->helper->getPlatformType(),
];
break;
case Alipayplus::TOUCHNGO_CODE:
case Touchngo::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'touch_n_go',
self::PLATFORM_TYPE => $this->helper->getPlatformType(),
Expand Down Expand Up @@ -240,6 +247,34 @@ public function build(array $buildSubject)
self::PLATFORM_TYPE => $this->helper->getPlatformType(),
];
break;
case Boost::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'boost',
];
break;
case DuitnowOBW::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'duitnow_obw',
self::BANK => $method->getAdditionalInformation(
DuitnowOBWDataAssignObserver::BANK
)
];
break;
case DuitnowQR::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'duitnow_qr',
];
break;
case MaybankQR::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'maybank_qr',
];
break;
case Shopeepay::CODE:
$paymentInfo[self::SOURCE] = [
self::SOURCE_TYPE => 'shopeepay',
];
break;
}

return $paymentInfo;
Expand Down
150 changes: 140 additions & 10 deletions Helper/OmiseHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Omise\Payment\Model\Config\Pointsciti;
use Omise\Payment\Model\Config\Installment;
use Omise\Payment\Model\Config\Truemoney;
use Omise\Payment\Model\Config\Touchngo;
use Omise\Payment\Model\Config\Fpx;
use Omise\Payment\Model\Config\Paynow;
use Omise\Payment\Model\Config\Promptpay;
Expand All @@ -20,6 +21,11 @@
use Omise\Payment\Model\Config\Rabbitlinepay;
use Omise\Payment\Model\Config\Ocbcpao;
use Omise\Payment\Model\Config\Grabpay;
use Omise\Payment\Model\Config\Boost;
use Omise\Payment\Model\Config\DuitnowOBW;
use Omise\Payment\Model\Config\DuitnowQR;
use Omise\Payment\Model\Config\MaybankQR;
use Omise\Payment\Model\Config\Shopeepay;
use Omise\Payment\Model\Config\Cc;
use Omise\Payment\Model\Config\CcGooglePay;
use Omise\Payment\Model\Config\Conveniencestore;
Expand Down Expand Up @@ -50,11 +56,16 @@ class OmiseHelper extends AbstractHelper
Alipayplus::DANA_CODE,
Alipayplus::GCASH_CODE,
Alipayplus::KAKAOPAY_CODE,
Alipayplus::TOUCHNGO_CODE,
Touchngo::CODE,
Mobilebanking::CODE,
Rabbitlinepay::CODE,
Ocbcpao::CODE,
Grabpay::CODE
Grabpay::CODE,
Boost::CODE,
DuitnowOBW::CODE,
DuitnowQR::CODE,
MaybankQR::CODE,
Shopeepay::CODE
];

/**
Expand Down Expand Up @@ -86,6 +97,110 @@ class OmiseHelper extends AbstractHelper
CcGooglePay::CODE
];

/**
* @var array
*/
private $omisePaymentMethods;

/**
*
* @var array
*/
private $omiseCodeByOmiseId = [
// card payment
Cc::ID => Cc::CODE,
CcGooglePay::ID => CcGooglePay::CODE,

// offsite payment
Alipay::ID => Alipay::CODE,
Truemoney::ID => Truemoney::CODE,
Pointsciti::ID => Pointsciti::CODE,
Fpx::ID => Fpx::CODE,
Alipayplus::ALIPAY_ID => Alipayplus::ALIPAY_CODE,
Alipayplus::ALIPAYHK_ID => Alipayplus::ALIPAYHK_CODE,
Alipayplus::DANA_ID => Alipayplus::DANA_CODE,
Alipayplus::GCASH_ID => Alipayplus::GCASH_CODE,
Alipayplus::KAKAOPAY_ID => Alipayplus::KAKAOPAY_CODE,
Touchngo::ID => Touchngo::CODE,
Rabbitlinepay::ID => Rabbitlinepay::CODE,
Ocbcpao::ID => Ocbcpao::CODE,
Grabpay::ID => Grabpay::CODE,
Boost::ID => Boost::CODE,
DuitnowOBW::ID => DuitnowOBW::CODE,
DuitnowQR::ID => DuitnowQR::CODE,
MaybankQR::ID => MaybankQR::CODE,
Shopeepay::ID => Shopeepay::CODE,

// offsite internet banking payment
Internetbanking::BBL_ID => Internetbanking::CODE,
Internetbanking::BAY_ID => Internetbanking::CODE,
Internetbanking::KTB_ID => Internetbanking::CODE,
Internetbanking::SCB_ID => Internetbanking::CODE,

// offsite installment banking payment
Installment::BAY_ID => Installment::CODE,
Installment::BBL_ID => Installment::CODE,
Installment::CITI_ID => Installment::CODE,
Installment::UOB_ID => Installment::CODE,
Installment::FIRST_CHOICE_ID => Installment::CODE,
Installment::KBANK_ID => Installment::CODE,
Installment::KTC_ID => Installment::CODE,
Installment::SCB_ID => Installment::CODE,
Installment::TTB_ID => Installment::CODE,
Installment::UOB_ID => Installment::CODE,

// offsite installment banking payment
Mobilebanking::BAY_ID => Mobilebanking::CODE,
Mobilebanking::BBL_ID => Mobilebanking::CODE,
Mobilebanking::KBANK_ID => Mobilebanking::CODE,
Mobilebanking::SCB_ID => Mobilebanking::CODE,

// offline payment
Paynow::ID => Paynow::CODE,
Promptpay::ID => Promptpay::CODE,
Tesco::ID => Tesco::CODE,
Conveniencestore::ID => Conveniencestore::CODE
];

/**
*
* @var array
*/
private $labelByOmiseCode = [
// card payment
Cc::CODE => "Credit Card Payment",
CcGooglePay::CODE => "Google Pay Payment",

// offsite payment
Alipay::CODE => "Alipay",
Internetbanking::CODE => "Internet Banking Payment",
Installment::CODE => "Installment Payment",
Truemoney::CODE => "TrueMoney Wallet Payment",
Pointsciti::CODE => "Citi Pay with Points",
Fpx::CODE => "FPX Payment",
Alipayplus::ALIPAY_CODE => "Alipay (Alipay+ Partner) Payment",
Alipayplus::ALIPAYHK_CODE => "AlipayHK (Alipay+ Partner) Payment",
Alipayplus::DANA_CODE => "DANA (Alipay+ Partner) Payment",
Alipayplus::GCASH_CODE => "GCash (Alipay+ Partner) Payment",
Alipayplus::KAKAOPAY_CODE => "Kakao Pay (Alipay+ Partner) Payment",
Touchngo::CODE => "Touch`n Go eWallet Payment",
Mobilebanking::CODE => "Mobile Banking Payment",
Rabbitlinepay::CODE => "Rabbit LINE Pay Payment",
Ocbcpao::CODE => "OCBC Pay Anyone Payment",
Grabpay::CODE => "GrabPay Payment",
Boost::CODE => "Boost Payment",
DuitnowOBW::CODE => "DuitNow Online Banking/Wallets Payment",
DuitnowQR::CODE => "DuitNow QR Payment",
MaybankQR::CODE => "Maybank QRPay Payment",
Shopeepay::CODE => "ShopeePay Payment",

// offline payment
Paynow::CODE => "PayNow QR Payment",
Promptpay::CODE => "PromptPay QR Payment",
Tesco::CODE => "Tesco Lotus Bill Payment",
Conveniencestore::CODE => "Convenience Store Payment"
];

/**
* @var Config
*/
Expand All @@ -97,6 +212,11 @@ public function __construct(
) {
$this->header = $header;
$this->config = $config;
$this->omisePaymentMethods = array_merge(
$this->offsitePaymentMethods,
$this->offlinePaymentMethods,
$this->cardPaymentMethods
);
}

/**
Expand Down Expand Up @@ -292,7 +412,7 @@ public function is3DSecureEnabled($charge)
}

/**
* Get platform type of WEB, IOS or ANDROID to add to source API parameter.
* Get platform Type of WEB, IOS or ANDROID to add to source API parameter.
* @return string
*/
public function getPlatformType()
Expand Down Expand Up @@ -346,13 +466,7 @@ public function createInvoiceAndMarkAsPaid($order, $chargeId, $isCapture = true)
*/
public function isOmisePayment($paymentMethod)
{
$omisePaymentMethods = array_merge(
$this->offsitePaymentMethods,
$this->offlinePaymentMethods,
$this->cardPaymentMethods
);

return in_array($paymentMethod, $omisePaymentMethods);
return in_array($paymentMethod, $this->omisePaymentMethods);
}

/**
Expand All @@ -378,4 +492,20 @@ public function validate3DSReferer()

return $isProduction || $isStaging;
}

public function getOmiseLabelByOmiseCode(string $code)
{
if (array_key_exists($code, $this->labelByOmiseCode)) {
return $this->labelByOmiseCode[$code];
}
return null;
}

public function getOmiseCodeByOmiseId(string $name)
{
if (array_key_exists($name, $this->omiseCodeByOmiseId)) {
return $this->omiseCodeByOmiseId[$name];
}
return null;
}
}
12 changes: 11 additions & 1 deletion Model/Api/Capabilities.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,22 @@ public function getBackendsByType(string $type)
}

/**
* Get Installment capabilities array from Omise-PHP
* Retrieves details of payment backends from capabilities
*
* @return array
*/
public function getBackends()
{
return $this->capabilities ? $this->capabilities->getBackends() : null;
}

/**
* Get information about tokenization methods
*
* @return array
*/
public function getTokenizationMethods()
{
return $this->capabilities ? $this->capabilities['tokenization_methods'] : null;
}
}
Loading

0 comments on commit 95f4e2d

Please sign in to comment.