Accettare un pagamento Klarna
Scopri come accettare un pagamento con Klarna, una modalità di pagamento a rate utilizzata in tutto il mondo.
Voci riga unificate con Klarna
Per ottimizzare i tassi di approvazione durante l’integrazione con Klarna, includi dati line_
per rappresentare il contenuto del carrello di un acquirente. Per l’accesso anticipato, consulta le voci riga di Payments.
Gli utenti Stripe possono utilizzare l’API Payment Intents, un percorso di integrazione unico per creare pagamenti utilizzando qualsiasi metodo supportato, per accettare pagamenti Klarna da clienti nei Paesi supportati di Klarna.
Klarna è un metodo di pagamento monouso con notifica immediata che richiede ai clienti di autenticare il pagamento. I clienti vengono reindirizzati a una pagina Klarna, dove possono scegliere tra più opzioni di pagamento (pagamento completo immediato, pagamento a rate o pagamento differito). Quando il cliente accetta i termini, Klarna garantisce la disponibilità dei fondi del cliente e li trasferisce sul tuo account Stripe. Il cliente ripaga Klarna in base all’opzione di pagamento selezionata.
Nota
Prima di avviare l’integrazione, assicurati che il tuo account sia idoneo per Klarna accedendo alle impostazioni delle modalità di pagamento.
Configurare StripeLato server
Innanzitutto, devi creare un account Stripe. Registrati ora.
Utilizza le nostre librerie per accedere all’API Stripe dalla tua applicazione:
Creare un PaymentIntentLato server
Un PaymentIntent è un oggetto che rappresenta la tua intenzione di riscuotere un pagamento da un cliente e traccia il ciclo di vita del processo di pagamento in ogni sua fase. Innanzitutto crea un PaymentIntent
sul tuo server.
Se hai già un’integrazione che utilizza l’API Payment Intents, aggiungi klarna
all’elenco dei tipi di metodi di pagamento per il tuo PaymentIntent
.
Klarna richiede solo la valuta del cliente. Se specifichi il parametro facoltativo shipping, verifica che questi campi siano compilati e non vuoti: name
, address.
, city
, country
e postal_
.
Recuperare la chiave privata client
L’oggetto PaymentIntent contiene una chiave privata client, che il lato client usa per completare la procedura di pagamento in modo sicuro. Per specificare la chiave privata sul lato client, puoi utilizzare approcci diversi.
Inviare il pagamento a StripeLato client
In questo passaggio, completi i pagamenti Klarna sul client con Stripe.js.
Configurare Stripe.js
Quando un cliente fa clic per pagare con Klarna, ti consigliamo di utilizzare Stripe.js per inviare il pagamento a Stripe. Stripe.js è la nostra libreria JavaScript di base per creare i flussi di pagamento. Gestisce automaticamente le operazioni complesse, come il reindirizzamento descritto di seguito. Inoltre ti consente di estendere facilmente la tua integrazione ad altre modalità di pagamento in futuro. Per includere lo script di Stripe.js nella tua pagina di pagamenti, aggiungilo nell’intestazione del file HTML.
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
Crea un’istanza di Stripe.js con il seguente JavaScript nella pagina di pagamento:
// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys var stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
Anziché inviare tutto l’oggetto PaymentIntent al client, utilizza la chiave privata client del passaggio 2. Questa chiave è diversa dalle chiavi API che eseguono l’autenticazione delle richieste API Stripe.
La chiave privata client deve essere gestita con cura in quanto può effettuare l’addebito. Non devi registrarla, inserirla negli URL né mostrarla a nessuno se non al cliente.
Utilizza stripe.confirmKlarnaPayment per gestire il reindirizzamento dalla tua pagina e completare il pagamento. Aggiungi un return_url a questa funzione per indicare dove Stripe deve reindirizzare l’utente dopo il completamento del pagamento sull’applicazione mobile o sul sito web di Klarna.
Nella pagina dei pagamenti di Klarna, il cliente seleziona tra le opzioni di pagamento disponibili nel proprio mercato. Per le disponibilità nei diversi mercati, consulta la tabella nella pagina della panoramica. Non puoi limitare o preselezionare le opzioni di pagamento dalla pagina dei pagamenti di Klarna: il fatto che sia il consumatore a scegliere aumenta le possibilità che effettui transazioni con la tua attività.
// Redirects away from the client const {error} = await stripe.confirmKlarnaPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}',{ return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }
Quando il cliente invia un pagamento, Stripe lo reindirizza al return_
e include i seguenti parametri di ricerca dell’URL. La pagina di ritorno può utilizzarli per ottenere lo stato del PaymentIntent in modo da poter mostrare lo stato del pagamento al cliente.
Quando specifichi il parametro return_
, puoi anche aggiungere i tuoi parametri di ricerca da utilizzare nella pagina di ritorno.
Parametro | Descrizione |
---|---|
payment_ | Identificativo univoco per il PaymentIntent |
payment_ | La chiave privata client dell’oggetto PaymentIntent . Per le integrazioni per gli abbonamenti, questo client_secret è esposto anche nell’oggetto Invoice tramite confirmation_ |
Quando il cliente viene reindirizzato al tuo sito, puoi utilizzare il payment_
per eseguire una query per il PaymentIntent e mostrare al cliente lo stato della transazione.
I dettagli sull’opzione di pagamento Klarna selezionata dal cliente in charge
sono disponibili nella proprietà payment_method_details. I valori consentiti sono quattro: pay_
, pay_
, pay_
e pay_
. Per ulteriori informazioni su queste opzioni, consulta la nostra pagina della panoramica su Klarna.
Puoi anche trovare le impostazioni locali usate per localizzare la pagina dei pagamenti di Klarna nella proprietà payment_method_details.
{ "charges": { "data": [ { "payment_method_details": { "klarna": { "payment_method_category": "pay_in_installments", "preferred_locale": "en-US" }, "type": "klarna" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU",
Eseguire il test dell'integrazione Klarna
Di seguito abbiamo selezionato dati di test per i Paesi attualmente supportati. In una sandbox, Klarna approva o rifiuta una transazione in base all’indirizzo email fornito.
Per i test in produzione, puoi utilizzare un importo di 3500
nella tua valuta locale per testare tutte le opzioni di pagamento di Klarna oltre ai finanziamenti. Ad esempio, se vuoi testare il pagamento in tre rate in Italia, puoi utilizzare una transazione di 35,00 EUR.
Autenticazione a due fattori
Qualsiasi numero a sei cifre è un codice valido per l’autenticazione a due fattori. Utilizza 999999
per la mancata autenticazione.
Modalità di rimborso
Nel flusso di Klarna in modalità di test, puoi utilizzare i seguenti valori di test per provare i diversi tipi di rimborso:
Tipo | Valore |
---|---|
Addebito diretto | DE11520513735120710131 |
Bonifico bancario | Banca demo |
Carta di credito |
|
Carta di debito |
|
Pagamenti non riusciti
Klarna decide se accettare o rifiutare una transazione in base a diversi fattori, ad esempio da quanto tempo l’acquirente utilizza Klarna, l’importo in sospeso che il cliente deve rimborsare o il valore dell’ordine corrente.
Quando il cliente seleziona un metodo di pagamento a rate, Klarna esegue una valutazione del rischio prima di accettare la transazione. A seconda del risultato della valutazione, dell’importo della transazione o del debito residuo del cliente, Klarna potrebbe rifiutare la transazione. Pertanto ti consigliamo di inserire altre opzioni di pagamento nel flusso di completamento della transazione, come ad esempio card
. In questi casi, il PaymentMethod viene scollegato e lo stato dell’oggetto PaymentIntent diventa automaticamente a requires_
.
I clienti devono completare il pagamento entro 48 ore dal reindirizzamento al sito Klarna. Se non viene intrapresa alcuna azione dopo 48 ore, l’oggetto PaymentMethod viene scollegato e lo stato dell’oggetto PaymentIntent passa automaticamente da requires_
a requires_
.
In questi casi, invita il cliente a riprovare con una diversa opzione di pagamento presente nel tuo flusso di completamento della transazione.
Limiti di frequenza di Klarna
Le richieste API indirizzate a Klarna sono soggette a limiti di frequenza oltre ai limiti di frequenza a livello dell’API di Stripe. Questi limiti possono variare a seconda della forma delle richieste API effettuate. In generale, se effettui più di 360 richieste al minuto, potresti riscontrare una certa limitazione della velocità sotto forma di risposte con codice di stato HTTP 400
o 402
. Contattaci per ulteriori informazioni se temi che il tuo utilizzo possa raggiungere questi livelli, poiché Klarna potrebbe essere in grado di aumentare questi limiti caso per caso.
Messaggi di errore
In genere i pagamenti Klarna non riusciti restituiscono uno dei seguenti codici di errore. Questi codici vengono visualizzati nell’oggetto API last_payment_error.
Attenzione
Prima della versione API 2023-08-16
, tutti gli errori di Klarna venivano segnalati come payment_intent_authentication_failure. Verifica che la tua versione dell’API sia aggiornata per visualizzare gli errori dettagliati elencati di seguito.
Codice di errore | Spiegazione |
---|---|
payment_method_customer_decline | Il cliente ha annullato il pagamento sulla pagina di Klarna |
payment_method_provider_decline | Klarna ha rifiutato il pagamento del cliente |
payment_intent_payment_attempt_expired | Il cliente non ha mai completato il pagamento sulla pagina di Klarna e la sessione di pagamento è scaduta |
payment_method_not_available | Si è verificato un errore imprevisto durante il tentativo di utilizzare Klarna |