mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 13:30:39 +08:00
feat(connector): [Adyen] implement Online Banking Thailand for Adyen (#1585)
Co-authored-by: Sangamesh Kulkarni <59434228+Sangamesh26@users.noreply.github.com>
This commit is contained in:
@ -319,6 +319,11 @@ payout_eligibility = true # Defaults the eligibility of a payout method to tru
|
||||
|
||||
[pm_filters.adyen]
|
||||
online_banking_fpx = {country = "MY", currency = "MYR"}
|
||||
online_banking_thailand = {country = "TH", currency = "THB"}
|
||||
|
||||
[bank_config.online_banking_fpx]
|
||||
adyen = { banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"}
|
||||
adyen = { banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"}
|
||||
|
||||
|
||||
[bank_config.online_banking_thailand]
|
||||
adyen = {banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"}
|
||||
@ -197,6 +197,9 @@ stripe = { banks = "alior_bank,bank_millennium,bank_nowy_bfg_sa,bank_pekao_sa,ba
|
||||
[bank_config.online_banking_fpx]
|
||||
adyen = { banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"}
|
||||
|
||||
[bank_config.online_banking_thailand]
|
||||
adyen = {banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"}
|
||||
|
||||
[pm_filters.default]
|
||||
google_pay = { country = "AL,DZ,AS,AO,AG,AR,AU,AT,AZ,BH,BY,BE,BR,BG,CA,CL,CO,HR,CZ,DK,DO,EG,EE,FI,FR,DE,GR,HK,HU,IN,ID,IE,IL,IT,JP,JO,KZ,KE,KW,LV,LB,LT,LU,MY,MX,NL,NZ,NO,OM,PK,PA,PE,PH,PL,PT,QA,RO,RU,SA,SG,SK,ZA,ES,LK,SE,CH,TW,TH,TR,UA,AE,GB,US,UY,VN" }
|
||||
apple_pay = { country = "AU,CN,HK,JP,MO,MY,NZ,SG,TW,AM,AT,AZ,BY,BE,BG,HR,CY,CZ,DK,EE,FO,FI,FR,GE,DE,GR,GL,GG,HU,IS,IE,IM,IT,KZ,JE,LV,LI,LT,LU,MT,MD,MC,ME,NL,NO,PL,PT,RO,SM,RS,SK,SI,ES,SE,CH,UA,GB,AR,CO,CR,BR,MX,PE,BH,IL,JO,KW,PS,QA,SA,AE,CA,UM,US", currency = "AUD,CHF,CAD,EUR,GBP,HKD,SGD,USD" }
|
||||
@ -254,6 +257,7 @@ kakao_pay = {country = "KR", currency = "KRW"}
|
||||
momo = {country = "VN", currency = "VND"}
|
||||
gcash = {country = "PH", currency = "PHP"}
|
||||
online_banking_fpx = {country = "MY", currency = "MYR"}
|
||||
online_banking_thailand = {country = "TH", currency = "THB"}
|
||||
|
||||
[pm_filters.braintree]
|
||||
paypal = { currency = "AUD,BRL,CAD,CNY,CZK,DKK,EUR,HKD,HUF,ILS,JPY,MYR,MXN,TWD,NZD,NOK,PHP,PLN,GBP,RUB,SGD,SEK,CHF,THB,USD" }
|
||||
|
||||
@ -202,6 +202,10 @@ payout_eligibility = true
|
||||
|
||||
[pm_filters.adyen]
|
||||
online_banking_fpx = {country = "MY", currency = "MYR"}
|
||||
online_banking_thailand = {country = "TH", currency = "THB"}
|
||||
|
||||
[bank_config.online_banking_fpx]
|
||||
adyen = { banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"}
|
||||
adyen = { banks = "affin_bank,agro_bank,alliance_bank,am_bank,bank_islam,bank_muamalat,bank_rakyat,bank_simpanan_nasional,cimb_bank,hong_leong_bank,hsbc_bank,kuwait_finance_house,may_bank,ocbc_bank,public_bank,rhb_bank,standard_chartered_bank,uob_bank"}
|
||||
|
||||
[bank_config.online_banking_thailand]
|
||||
adyen = {banks = "bangkok_bank,krungsri_bank,krung_thai_bank,the_siam_commercial_bank,kasikorn_bank"}
|
||||
@ -395,6 +395,11 @@ pub enum BankNames {
|
||||
VolkswagenBank,
|
||||
AliorBank,
|
||||
Boz,
|
||||
BangkokBank,
|
||||
KrungsriBank,
|
||||
KrungThaiBank,
|
||||
TheSiamCommercialBank,
|
||||
KasikornBank,
|
||||
}
|
||||
|
||||
#[derive(
|
||||
|
||||
@ -860,6 +860,10 @@ pub enum BankRedirectData {
|
||||
#[schema(value_type = BankNames)]
|
||||
issuer: api_enums::BankNames,
|
||||
},
|
||||
OnlineBankingThailand {
|
||||
#[schema(value_type = BankNames)]
|
||||
issuer: api_enums::BankNames,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, ToSchema)]
|
||||
|
||||
@ -584,6 +584,7 @@ pub enum PaymentMethodType {
|
||||
MobilePay,
|
||||
Momo,
|
||||
Multibanco,
|
||||
OnlineBankingThailand,
|
||||
OnlineBankingCzechRepublic,
|
||||
OnlineBankingFinland,
|
||||
OnlineBankingFpx,
|
||||
|
||||
@ -1569,6 +1569,7 @@ impl From<PaymentMethodType> for PaymentMethod {
|
||||
PaymentMethodType::OnlineBankingCzechRepublic => Self::BankRedirect,
|
||||
PaymentMethodType::OnlineBankingFinland => Self::BankRedirect,
|
||||
PaymentMethodType::OnlineBankingFpx => Self::BankRedirect,
|
||||
PaymentMethodType::OnlineBankingThailand => Self::BankRedirect,
|
||||
PaymentMethodType::OnlineBankingPoland => Self::BankRedirect,
|
||||
PaymentMethodType::OnlineBankingSlovakia => Self::BankRedirect,
|
||||
PaymentMethodType::PayBright => Self::PayLater,
|
||||
|
||||
@ -306,4 +306,9 @@ pub enum BankNames {
|
||||
RhbBank,
|
||||
StandardCharteredBank,
|
||||
UobBank,
|
||||
BangkokBank,
|
||||
KrungsriBank,
|
||||
KrungThaiBank,
|
||||
TheSiamCommercialBank,
|
||||
KasikornBank,
|
||||
}
|
||||
|
||||
@ -329,6 +329,8 @@ pub enum AdyenPaymentMethod<'a> {
|
||||
OnlineBankingSlovakia(Box<OnlineBankingSlovakiaData>),
|
||||
#[serde(rename = "molpay_ebanking_fpx_MY")]
|
||||
OnlineBankingFpx(Box<OnlineBankingFpxData>),
|
||||
#[serde(rename = "molpay_ebanking_TH")]
|
||||
OnlineBankingThailand(Box<OnlineBankingThailandData>),
|
||||
PayBright(Box<PayBrightData>),
|
||||
Sofort(Box<BankRedirectionPMData>),
|
||||
Trustly(Box<BankRedirectionPMData>),
|
||||
@ -559,7 +561,13 @@ pub struct OnlineBankingSlovakiaData {
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct OnlineBankingFpxData {
|
||||
issuer: AdyenIssuerID,
|
||||
issuer: OnlineBankingFpxIssuer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct OnlineBankingThailandData {
|
||||
issuer: OnlineBankingThailandIssuer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
@ -590,7 +598,7 @@ impl TryFrom<&api_enums::BankNames> for OnlineBankingSlovakiaBanks {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&api_enums::BankNames> for AdyenIssuerID {
|
||||
impl TryFrom<&api_enums::BankNames> for OnlineBankingFpxIssuer {
|
||||
type Error = Error;
|
||||
fn try_from(bank_name: &api_enums::BankNames) -> Result<Self, Self::Error> {
|
||||
match bank_name {
|
||||
@ -621,6 +629,24 @@ impl TryFrom<&api_enums::BankNames> for AdyenIssuerID {
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<&api_enums::BankNames> for OnlineBankingThailandIssuer {
|
||||
type Error = Error;
|
||||
fn try_from(bank_name: &api_enums::BankNames) -> Result<Self, Self::Error> {
|
||||
match bank_name {
|
||||
api::enums::BankNames::BangkokBank => Ok(Self::Bangkokbank),
|
||||
api::enums::BankNames::KrungsriBank => Ok(Self::Krungsribank),
|
||||
api::enums::BankNames::KrungThaiBank => Ok(Self::Krungthaibank),
|
||||
api::enums::BankNames::TheSiamCommercialBank => Ok(Self::Siamcommercialbank),
|
||||
api::enums::BankNames::KasikornBank => Ok(Self::Kbank),
|
||||
_ => Err(errors::ConnectorError::NotSupported {
|
||||
message: String::from("BankRedirect"),
|
||||
connector: "Adyen",
|
||||
payment_experience: api_enums::PaymentExperience::RedirectToUrl.to_string(),
|
||||
})?,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct BlikRedirectionData {
|
||||
@ -827,6 +853,8 @@ pub enum PaymentType {
|
||||
OnlineBankingSlovakia,
|
||||
#[serde(rename = "molpay_ebanking_fpx_MY")]
|
||||
OnlineBankingFpx,
|
||||
#[serde(rename = "molpay_ebanking_TH")]
|
||||
OnlineBankingThailand,
|
||||
PayBright,
|
||||
Paypal,
|
||||
Scheme,
|
||||
@ -850,7 +878,7 @@ pub enum PaymentType {
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, Serialize, Clone)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum AdyenIssuerID {
|
||||
pub enum OnlineBankingFpxIssuer {
|
||||
FpxAbb,
|
||||
FpxAgrobank,
|
||||
FpxAbmb,
|
||||
@ -871,6 +899,20 @@ pub enum AdyenIssuerID {
|
||||
FpxUob,
|
||||
}
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, Serialize, Clone)]
|
||||
pub enum OnlineBankingThailandIssuer {
|
||||
#[serde(rename = "molpay_bangkokbank")]
|
||||
Bangkokbank,
|
||||
#[serde(rename = "molpay_krungsribank")]
|
||||
Krungsribank,
|
||||
#[serde(rename = "molpay_krungthaibank")]
|
||||
Krungthaibank,
|
||||
#[serde(rename = "molpay_siamcommercialbank")]
|
||||
Siamcommercialbank,
|
||||
#[serde(rename = "molpay_kbank")]
|
||||
Kbank,
|
||||
}
|
||||
|
||||
pub struct AdyenTestBankNames<'a>(&'a str);
|
||||
|
||||
impl<'a> TryFrom<&api_enums::BankNames> for AdyenTestBankNames<'a> {
|
||||
@ -1561,7 +1603,12 @@ impl<'a> TryFrom<&api_models::payments::BankRedirectData> for AdyenPaymentMethod
|
||||
),
|
||||
api_models::payments::BankRedirectData::OnlineBankingFpx { issuer } => Ok(
|
||||
AdyenPaymentMethod::OnlineBankingFpx(Box::new(OnlineBankingFpxData {
|
||||
issuer: AdyenIssuerID::try_from(issuer)?,
|
||||
issuer: OnlineBankingFpxIssuer::try_from(issuer)?,
|
||||
})),
|
||||
),
|
||||
api_models::payments::BankRedirectData::OnlineBankingThailand { issuer } => Ok(
|
||||
AdyenPaymentMethod::OnlineBankingThailand(Box::new(OnlineBankingThailandData {
|
||||
issuer: OnlineBankingThailandIssuer::try_from(issuer)?,
|
||||
})),
|
||||
),
|
||||
api_models::payments::BankRedirectData::Sofort { .. } => Ok(
|
||||
|
||||
@ -194,6 +194,7 @@ impl ForeignFrom<api_enums::PaymentMethodType> for api_enums::PaymentMethod {
|
||||
| api_enums::PaymentMethodType::Eps
|
||||
| api_enums::PaymentMethodType::BancontactCard
|
||||
| api_enums::PaymentMethodType::Blik
|
||||
| api_enums::PaymentMethodType::OnlineBankingThailand
|
||||
| api_enums::PaymentMethodType::OnlineBankingCzechRepublic
|
||||
| api_enums::PaymentMethodType::OnlineBankingFinland
|
||||
| api_enums::PaymentMethodType::OnlineBankingFpx
|
||||
|
||||
@ -576,6 +576,23 @@ async fn should_make_adyen_online_banking_fpx_payment(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn should_make_adyen_online_banking_thailand_payment(
|
||||
web_driver: WebDriver,
|
||||
) -> Result<(), WebDriverError> {
|
||||
let conn = AdyenSeleniumTest {};
|
||||
conn.make_redirection_payment(
|
||||
web_driver,
|
||||
vec![
|
||||
Event::Trigger(Trigger::Goto(&format!("{CHEKOUT_BASE_URL}/saved/184"))),
|
||||
Event::Trigger(Trigger::Click(By::Id("card-submit-btn"))),
|
||||
Event::Trigger(Trigger::Click(By::Css("button[value='authorised']"))),
|
||||
Event::Assert(Assert::IsPresent("succeeded")),
|
||||
],
|
||||
)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
#[ignore]
|
||||
@ -749,3 +766,11 @@ fn should_make_adyen_dana_payment_test() {
|
||||
fn should_make_adyen_online_banking_fpx_payment_test() {
|
||||
tester!(should_make_adyen_online_banking_fpx_payment);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn should_make_adyen_online_banking_thailand_payment_test() {
|
||||
tester!(should_make_adyen_online_banking_thailand_payment);
|
||||
}
|
||||
|
||||
// https://hs-payments-test.netlify.app/paypal-redirect?amount=70.00&country=US¤cy=USD&mandate_data[customer_acceptance][acceptance_type]=offline&mandate_data[customer_acceptance][accepted_at]=1963-05-03T04:07:52.723Z&mandate_data[customer_acceptance][online][ip_address]=127.0.0.1&mandate_data[customer_acceptance][online][user_agent]=amet%20irure%20esse&mandate_data[mandate_type][multi_use][amount]=700&mandate_data[mandate_type][multi_use][currency]=USD&apikey=dev_uFpxA0r6jjbVaxHSY3X0BZLL3erDUzvg3i51abwB1Bknu3fdiPxw475DQgnByn1z
|
||||
|
||||
@ -2711,7 +2711,12 @@
|
||||
"bank_pekao_sa",
|
||||
"volkswagen_bank",
|
||||
"alior_bank",
|
||||
"boz"
|
||||
"boz",
|
||||
"bangkok_bank",
|
||||
"krungsri_bank",
|
||||
"krung_thai_bank",
|
||||
"the_siam_commercial_bank",
|
||||
"kasikorn_bank"
|
||||
]
|
||||
},
|
||||
"BankRedirectBilling": {
|
||||
@ -3089,6 +3094,25 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": [
|
||||
"online_banking_thailand"
|
||||
],
|
||||
"properties": {
|
||||
"online_banking_thailand": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"issuer"
|
||||
],
|
||||
"properties": {
|
||||
"issuer": {
|
||||
"$ref": "#/components/schemas/BankNames"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -7188,6 +7212,7 @@
|
||||
"mobile_pay",
|
||||
"momo",
|
||||
"multibanco",
|
||||
"online_banking_thailand",
|
||||
"online_banking_czech_republic",
|
||||
"online_banking_finland",
|
||||
"online_banking_fpx",
|
||||
|
||||
Reference in New Issue
Block a user