Skip to content

Commit

Permalink
Implemented Klarna mop
Browse files Browse the repository at this point in the history
  • Loading branch information
Silviana Ghita committed Sep 12, 2023
1 parent 904c289 commit 8e1ff84
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/mangopay/pay_in.rb
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,16 @@ def self.url(*)
end
end

module Klarna
class Web < Resource
include HTTPCalls::Create

def self.url(*)
"#{MangoPay.api_path}/payins/payment-methods/klarna"
end
end
end

module RecurringPayments
class Recurring < Resource
include HTTPCalls::Create
Expand Down
32 changes: 32 additions & 0 deletions spec/mangopay/payin_klarna_web_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
describe MangoPay::PayIn::Klarna::Web, type: :feature do
include_context 'wallets'
include_context 'payins'

def check_type_and_status(payin)
expect(payin['Type']).to eq('PAYIN')
expect(payin['Nature']).to eq('REGULAR')
expect(payin['PaymentType']).to eq('KLARNA')
expect(payin['ExecutionType']).to eq('WEB')
expect(payin['Status']).to eq('CREATED')
end

describe 'CREATE' do
it 'creates a klarna web payin' do
created = new_payin_klarna_web
expect(created['Id']).not_to be_nil
expect(created['ReturnURL']).not_to be_nil
check_type_and_status(created)
end
end

describe 'FETCH' do
it 'fetches a payin' do
created = new_payin_klarna_web
fetched = MangoPay::PayIn.fetch(created['Id'])
expect(fetched['Id']).to eq(created['Id'])
check_type_and_status(created)
check_type_and_status(fetched)
end
end
end

60 changes: 60 additions & 0 deletions spec/mangopay/shared_resources.rb
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,66 @@ def create_new_document(user)
)
end

###############################################
# KLARNA/web
###############################################
let(:new_payin_klarna_web) do
MangoPay::PayIn::Klarna::Web.create(
AuthorId: new_natural_user['Id'],
CreditedWalletId: new_wallet['Id'],
DebitedFunds: {Currency: 'EUR', Amount: 400},
Fees: {Currency: 'EUR', Amount: 10},
ReturnURL: 'http://www.my-site.com/returnURL',
LineItems: [
{
Name: "running shoes",
Quantity: 1,
UnitAmount: 200,
TaxAmount: 0,
Description: "seller1 ID"
},
{
Name: "running shoes",
Quantity: 1,
UnitAmount: 200,
TaxAmount: 0,
Description: "seller2 ID"
}
],
Country: 'FR',
Culture: 'FR',
Phone: '33#607080900',
Email: 'mango@mangopay.com',
AdditionalData: '{}',
Billing: {
Address: {
AddressLine1: 'AddressLine1',
AddressLine2: 'AddressLine2',
City: 'City',
Region: 'Region',
PostalCode: 'PostalCode',
Country: 'FR'
},
FirstName: 'Joe',
LastName: 'Blogs'
},
Shipping: {
Address: {
AddressLine1: 'AddressLine1',
AddressLine2: 'AddressLine2',
City: 'City',
Region: 'Region',
PostalCode: 'PostalCode',
Country: 'FR'
},
FirstName: 'Joe',
LastName: 'Blogs'
},
MerchantOrderId: 'afd48-879d-48fg',
Tag: 'Test PayIn/Klarna/Web'
)
end

###############################################
# PAYPAL/direct
###############################################
Expand Down

0 comments on commit 8e1ff84

Please sign in to comment.