Class: SpreeAdyen::Webhooks::Actions::CreateSource

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_adyen/webhooks/actions/create_source.rb

Constant Summary collapse

SOURCE_KLASS_MAP =
{
  affirm: SpreeAdyen::PaymentSources::Affirm,
  alipay: SpreeAdyen::PaymentSources::Alipay,
  bacs: SpreeAdyen::PaymentSources::Bacs,
  bankTransfer_IBAN: SpreeAdyen::PaymentSources::BankTransfer,
  klarna_b2b: SpreeAdyen::PaymentSources::Billie,
  blik: SpreeAdyen::PaymentSources::Blik,
  clearpay: SpreeAdyen::PaymentSources::Clearpay,
  eps: SpreeAdyen::PaymentSources::Eps,
  ideal: SpreeAdyen::PaymentSources::Ideal,
  facilypay_3x: SpreeAdyen::PaymentSources::Oney,
  facilypay_4x: SpreeAdyen::PaymentSources::Oney,
  facilypay_6x: SpreeAdyen::PaymentSources::Oney,
  facilypay_10x: SpreeAdyen::PaymentSources::Oney,
  facilypay_12x: SpreeAdyen::PaymentSources::Oney,
  scalapay_3x: SpreeAdyen::PaymentSources::Scalapay,
  klarna: SpreeAdyen::PaymentSources::Klarna,
  klarna_account: SpreeAdyen::PaymentSources::Klarna,
  klarna_paynow: SpreeAdyen::PaymentSources::Klarna,
  klarna_paylater: SpreeAdyen::PaymentSources::Klarna,
  klarna_payovertime: SpreeAdyen::PaymentSources::Klarna,
  onlineBanking_CZ: SpreeAdyen::PaymentSources::OnlineBankingCzechRepublic,
  onlineBanking_PL: SpreeAdyen::PaymentSources::OnlineBankingPoland,
  paybybank: SpreeAdyen::PaymentSources::PayByBank,
  paypal: SpreeAdyen::PaymentSources::Paypal,
  paypo: SpreeAdyen::PaymentSources::Paypo,
  paysafecard: SpreeAdyen::PaymentSources::Paysafecard,
  ratepay_directdebit: SpreeAdyen::PaymentSources::RatePayDirectDebit,
  riverty: SpreeAdyen::PaymentSources::Riverty,
  samsungpay: SpreeAdyen::PaymentSources::SamsungPay,
  sepadirectdebit: SpreeAdyen::PaymentSources::SepaDirectDebit,
  trustly: SpreeAdyen::PaymentSources::Trustly,
  wechatpaySDK: SpreeAdyen::PaymentSources::WechatPay,
  wechatpayQR: SpreeAdyen::PaymentSources::WechatPay,
  ach: SpreeAdyen::PaymentSources::AchDirectDebit,
  afterpaytouch: SpreeAdyen::PaymentSources::Afterpay,
  afterpaytouch_US: SpreeAdyen::PaymentSources::CashAppAfterpay,
  alipay_hk: SpreeAdyen::PaymentSources::AlipayHk,
  alma: SpreeAdyen::PaymentSources::Alma,
  ancv: SpreeAdyen::PaymentSources::Ancv,
  atome: SpreeAdyen::PaymentSources::Atome,
  benefit: SpreeAdyen::PaymentSources::Benefit,
  bcmc: SpreeAdyen::PaymentSources::Bancontact,
  bcmc_mobile: SpreeAdyen::PaymentSources::Bancontact,
  bizum: SpreeAdyen::PaymentSources::Bizum,
  boleto: SpreeAdyen::PaymentSources::Boleto,
  cashapp: SpreeAdyen::PaymentSources::Cashapp,
  doku_alfamart: SpreeAdyen::PaymentSources::Doku,
  doku_indomaret: SpreeAdyen::PaymentSources::Doku,
  dana: SpreeAdyen::PaymentSources::Dana,
  duitnow: SpreeAdyen::PaymentSources::Duitnow,
  fastlane: SpreeAdyen::PaymentSources::Fastlane,
  molpay_ebanking_fpx_MY: SpreeAdyen::PaymentSources::Fpx,
  gcash: SpreeAdyen::PaymentSources::Gcash,
  givex: SpreeAdyen::PaymentSources::GiftCards,
  genericgiftcard: SpreeAdyen::PaymentSources::GiftCards,
  valuelink: SpreeAdyen::PaymentSources::GiftCards,
  svs: SpreeAdyen::PaymentSources::GiftCards,
  giropay: SpreeAdyen::PaymentSources::Giropay,
  grabpay_MY: SpreeAdyen::PaymentSources::Grabpay,
  grabpay_PH: SpreeAdyen::PaymentSources::Grabpay,
  grabpay_SG: SpreeAdyen::PaymentSources::Grabpay
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(event:, payment_method:, user:) ⇒ CreateSource

Returns a new instance of CreateSource.



69
70
71
72
73
# File 'app/services/spree_adyen/webhooks/actions/create_source.rb', line 69

def initialize(event:, payment_method:, user:)
  @event = event
  @payment_method = payment_method
  @user = user
end

Instance Method Details

#callObject



75
76
77
78
79
80
81
# File 'app/services/spree_adyen/webhooks/actions/create_source.rb', line 75

def call
  if event.payment_method_reference.in?(SpreeAdyen::Config.credit_card_sources)
    find_or_create_credit_card
  else
    find_or_create_source
  end
end

#find_or_create_credit_cardObject



92
93
94
95
96
97
98
# File 'app/services/spree_adyen/webhooks/actions/create_source.rb', line 92

def find_or_create_credit_card
  SpreeAdyen::Webhooks::Actions::FindOrCreateCreditCard.new(
    event: event,
    gateway: payment_method,
    user: user
  ).call
end

#find_or_create_sourceObject



83
84
85
86
87
88
89
90
# File 'app/services/spree_adyen/webhooks/actions/create_source.rb', line 83

def find_or_create_source
  source_klass_factory.find_or_create_by(
    gateway_payment_profile_id: event.stored_payment_method_id.presence || event.psp_reference,
    payment_method: payment_method
  ) do |source|
    source.user = user
  end
end