Pagina di Pagamento Ospitata (HPP)
Accetta pagamenti utilizzando la pagina di pagamento ospitata di Cost+
La Pagina di Pagamento Ospitata (HPP) è il modulo di pagamento conforme PCI DSS di Cost+. Ti consente di accettare pagamenti senza gestire dati sensibili delle carte sui tuoi server. Crei un ordine tramite l'API, reindirizzi il cliente alla pagina ospitata e il cliente torna sul tuo sito dopo il pagamento.
Come Funziona
- Il tuo server crea un ordine chiamando POST /v1/orders/.
- L'API restituisce un URL che punta alla pagina di pagamento ospitata.
- Reindirizzi il cliente alla pagina di pagamento.
- Il cliente completa il pagamento sulla pagina ospitata Cost+.
- Il cliente viene reindirizzato al tuo
return_url(ofailure_urlper i pagamenti falliti). - Cost+ invia una notifica webhook al tuo
webhook_urlcon lo stato dell'ordine.
La pagina di pagamento ospitata è completamente conforme PCI DSS. Non dovrai mai gestire numeri di carta grezzi o dati di pagamento sensibili sui tuoi server.
Creare un Ordine
Esistono due approcci per utilizzare l'HPP:
Approccio 1: Mostrare Tutti i Metodi di Pagamento (Il più semplice)
Crea un ordine senza specificare transactions. La risposta include un order_url — il cliente viene reindirizzato lì e vede tutti i metodi di pagamento abilitati per il tuo account:
{
"currency": "EUR",
"amount": 1295,
"merchant_order_id": "my-order-id-1",
"description": "My amazing order",
"return_url": "https://www.example.com",
"webhook_url": "https://www.example.com/webhook"
}{
"id": "43114fde-da30-4115-8004-b7f808f9b25c",
"status": "new",
"currency": "EUR",
"amount": 1295,
"order_url": "https://api.costplus.online/pay/43114fde.../select-payment-method/",
"return_url": "https://www.example.com",
"webhook_url": "https://www.example.com/webhook"
}Reindirizza il cliente all'order_url. Sulla pagina ospitata vengono mostrati tutti i metodi di pagamento abilitati.
Approccio 2: Preselezionare i Metodi di Pagamento
Crea un ordine con un array transactions per controllare quali metodi di pagamento appaiono e in quale ordine. Ogni transazione include un payment_method, e la risposta restituisce un payment_url all'interno dell'oggetto transazione:
{
"currency": "EUR",
"amount": 1295,
"merchant_order_id": "my-order-id-1",
"description": "My amazing order",
"return_url": "https://www.example.com",
"webhook_url": "https://www.example.com/webhook",
"transactions": [
{ "payment_method": "credit-card" }
]
}{
"id": "4851e31c-4137-4e91-95ef-1df945ee76a2",
"status": "new",
"currency": "EUR",
"amount": 1295,
"transactions": [
{
"id": "d291f03f-a406-428a-967a-4895a46e03fd",
"payment_method": "credit-card",
"status": "new",
"payment_url": "https://api.costplus.online/pay/4851e31c.../select-payment-method/credit-card/d291f03f.../"
}
]
}Reindirizza il cliente al payment_url dalla transazione.
Se fornisci una sola voce nell'array transactions, il cliente viene portato direttamente a quel metodo di pagamento senza vedere una schermata di selezione. L'array flags contiene "is-test" quando si utilizza una chiave API sandbox.
Campi della Richiesta
| Campo | Obbligatorio | Descrizione |
|---|---|---|
currency | Sì | Codice valuta ISO 4217 (es. EUR, GBP, SEK) |
amount | SÌ | Importo nell'unità minore ISO 4217 della valuta. Ad esempio, 12.95 EUR è rappresentato come 1295 |
merchant_order_id | No | Il tuo ID di riferimento per l'ordine |
return_url | No | URL a cui reindirizzare il cliente dopo il pagamento (predefinito per tutti gli stati) |
failure_url | No | URL a cui reindirizzare il cliente in caso di stato cancelled, expired o error (vedi URL di Ritorno sotto) |
locale | No | Lingua della pagina di pagamento. Supportate: en-GB, de-DE, nl-NL, nl-BE, fr-BE, sv-SE, no-NO, da-DK |
description | No | Descrizione dell'ordine, mostrata al cliente |
payment_methods | NO | Filtra per un singolo metodo di pagamento (ad esempio ["credit-card"]). Omettere per mostrare tutti i metodi abilitati. Per più metodi specifici, utilizzare invece l'array transactions |
webhook_url | No | URL per ricevere le notifiche di cambio stato |
expiration_period | No | Durata ISO 8601 per la scadenza dell'ordine. Il valore predefinito è PT30M (30 minuti) |
Il campo amount è sempre un numero intero nell'unità minore ISO 4217 della valuta. Per EUR, 1295 significa 12,95 EUR; le valute a zero e tre decimali utilizzano il proprio esponente ISO 4217. Passare un valore decimale come 1295.00 o 12.95 risulterà in un errore o in un addebito errato.
Metodi di Pagamento Multipli
Esistono due modi per controllare quali metodi di pagamento appaiono sulla pagina ospitata:
Opzione A: payment_methods (filtro singolo). Passa un array a elemento singolo per limitare l'ordine a un metodo di pagamento. Ometti completamente il campo per mostrare tutti i metodi abilitati per il tuo account.
Opzione B: array transactions (consigliato per più metodi). Aggiungi una voce per metodo di pagamento. Ogni transazione ottiene il proprio payment_url e i metodi vengono visualizzati in ordine di array sulla pagina ospitata:
"transactions": [
{ "payment_method": "credit-card" },
{ "payment_method": "apple-pay" }
]Il campo payment_methods sugli ordini accetta al massimo un valore. Per offrire più metodi specifici, utilizzare sempre l'array transactions. Se hai bisogno di un collegamento riutilizzabile con più metodi di pagamento, considera invece i Link di pagamento, che supportano un vero array payment_methods.
URL di Ritorno
Dopo il pagamento, il cliente viene reindirizzato in base allo stato dell'ordine e agli URL forniti:
-
Quando sono impostati sia
return_urlchefailure_url:cancelled,expiredoerror→ il cliente viene reindirizzato afailure_url- Tutti gli altri stati → il cliente viene reindirizzato a
return_url
-
Quando è impostato solo
return_url:- Tutti gli stati → il cliente viene reindirizzato a
return_url
- Tutti gli stati → il cliente viene reindirizzato a
Usa failure_url per mostrare una pagina di riprova o supporto per i pagamenti falliti, mentre return_url mostra una conferma dell'ordine. Se hai bisogno di una sola destinazione, return_url da solo è sufficiente.
Comportamento del Pulsante Annulla
La pagina di pagamento ospitata include un pulsante di annullamento. Quando il cliente lo clicca, viene reindirizzato a failure_url (se fornito) o return_url. Lo stato dell'ordine passerà a cancelled. Verifica sempre lo stato dell'ordine tramite l'API o i webhook piuttosto che fare affidamento solo sul reindirizzamento.
Endpoint Correlati
- Crea Ordine — crea un ordine di pagamento e ricevi il
payment_url - Ottieni Ordine — controlla lo stato dell'ordine dopo il pagamento