Add external payment method to Klarna Checkout

Hello!

We would like to add an external payment method to Klarna Checkout according to these instructions https://developers.klarna.com/documentation/klarna-checkout/external-payment-methods/#external-payment-methods-external-checkouts

I.e. we need to add parameter external_payment_methods when calling Klarna. I suppose we should do this in method UpdateDataSentToKlarna in KlarnaPaymentWidgetConfig.cs, is this correct? And then redirect back to a url on our site to handle the external payment method.

The payment method we would like to add is PayPal. Is it a good idea to use PayPal add-on for this?Even if we are not using it on the regular checkout page. Or will that just complicate things, should we integrate with PayPal ourselves without using add-on?

What do you think? Would appreciate some feedback about this.

Litium version: 7.1.0

It is best to use the PayPal AddOn and have PayPal as a stand alone payment method and not have it inside Klarna checkout.
Why is it required to use PayPal from inside KCO?

If you combine Klarna Checkout with another payment method you will use two different forms for filling in your name and address. If you switch payment method the form you filled in will be replaced with another form and the values have to be filled in again. You also have to select payment option twice, first Klarna Checkout payment provider in Litium and then payment option at Klarna.

We think it would be a better solution to always present the same form (Klarna Checkout) and show PayPal together with the payment options in Klarna Checkout.

1 Like

I’m not sure that what you try to achive is something that Klarna Checkout is supporting.

If I remember correct the extra payment method you can add to Klarna Checkout will end up as payment selections in the Klarna iframe, when you select the own created payment method you are redirected to that payment provider site and if that site need to have customer information the user need to fill the user information at that site also, depend on that payment provider you can get different information back and store on the order. In most cases it is only the transaction reference, not any information about the customer so that need to be collected at merchant site in most cases before sending the user to the other payment provider.

It seems you did a similar thing in accelerator already. I tried to use the external payment method “Cash on delivery” which redirects to

/site.axd/KlarnaPayment/ChangePaymentMethod?PaymentProvider=DirectPay&PaymentMethod=DirectPay&RedirectUrl=%2Fse%2Fkassa.PlaceOrderDirect

Order, including name and address, is fetched from Klarna in KlarnaPaymentController.ChangePaymentMethod but i get an error message on checkout page “Vald betalningsmetod stöds inte längre.” returned from _checkoutService.ValidateOrder in CheckoutController.PlaceOrderDirect.

Do you know what needs to be adjusted to be able to use “Cash on Delivery” in accelerator?

The validation is thrown by the solution code, see the file PaymentMethodValidator in accelerator to see why it is failing to validate.

Thanks! PaymentMethod was set to DirectPay in KlarnaPaymentWidgetConfig.cs, it works after I changed according to below. Would be nice if you can adjust this in accelerator.

var routeValues = new
{
    PaymentProvider = "DirectPay",
    PaymentMethod = "DirectPayment",
    RedirectUrl = redirectUrl
};
2 Likes

Created bug 45506 that will track this issue.