Cost+Docs

Hosted Payment Page (HPP)

Ta emot betalningar med Cost+ hosted payment page

Hosted Payment Page (HPP) är Cost+ PCI DSS-kompatibla betalningsformulär. Det låter dig ta emot betalningar utan att hantera känslig kortdata på dina egna servrar. Du skapar en order via API:et, omdirigerar kunden till den hostade sidan, och de återvänder till din webbplats efter betalningen.

Hur det fungerar

  1. Din server skapar en order genom att anropa POST /v1/orders/.
  2. API:et returnerar en URL som pekar till den hostade betalningssidan.
  3. Du omdirigerar kunden till betalningssidan.
  4. Kunden genomför betalningen på Cost+ hostade sida.
  5. Kunden omdirigeras tillbaka till din return_url (eller failure_url vid misslyckade betalningar).
  6. Cost+ skickar en webhook-notifiering till din webhook_url med orderstatus.

Den hostade betalningssidan är fullt PCI DSS-kompatibel. Du behöver aldrig hantera råa kortnummer eller känslig betalningsdata på dina servrar.

Skapa en order

Det finns två tillvägagångssätt för att använda HPP:

Metod 1: Visa alla betalningsmetoder (enklast)

Skapa en order utan att ange transactions. Svaret innehåller en order_url — kunden omdirigeras dit och ser alla betalningsmetoder som är aktiverade för ditt konto:

Request
{
  "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"
}
Response
{
  "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"
}

Omdirigera kunden till order_url. På den hostade sidan visas alla aktiverade betalningsmetoder.

Metod 2: Förval av betalningsmetoder

Skapa en order med en transactions-array för att styra vilka betalningsmetoder som visas och i vilken ordning. Varje transaktion inkluderar en payment_method, och svaret returnerar en payment_url i transaktionsobjektet:

Request
{
  "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" }
  ]
}
Response
{
  "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.../"
    }
  ]
}

Omdirigera kunden till payment_url från transaktionen.

Om du bara anger en enda post i transactions-arrayen tas kunden direkt till den betalningsmetoden utan att se en valskärm. flags-arrayen innehåller "is-test" vid användning av en sandbox API-nyckel.

Förfrågningsfält

FältObligatorisktBeskrivning
currencyJaISO 4217-valutakod (t.ex. EUR, GBP, SEK)
amountJaBelopp i valutans ISO 4217 mindre enhet. Till exempel representeras 12,95 EUR som 1295
merchant_order_idNejDitt eget referens-ID för ordern
return_urlNejURL att omdirigera kunden till efter betalning (standard för alla statusar)
failure_urlNejURL att omdirigera kunden till vid cancelled, expired eller error-status (se Retur-URL:er nedan)
localeNejSpråk för betalningssidan. Stöds: en-GB, de-DE, nl-NL, nl-BE, fr-BE, sv-SE, no-NO, da-DK
descriptionNejBeskrivning av ordern, visas för kunden
payment_methodsIngaFiltrera till en enda betalningsmetod (t.ex. ["credit-card"]). Uteslut för att visa alla aktiverade metoder. För flera specifika metoder, använd transactions-matrisen istället
webhook_urlNejURL för att ta emot statusändringsnotifieringar
expiration_periodNejISO 8601-duration för orderutgång. Standard är PT30M (30 minuter)

Fältet amount är alltid ett heltal i valutans ISO 4217 mindre enhet. För EUR betyder 1295 12,95 EUR; Noll- och tredecimalvalutor använder sin egen ISO 4217-exponent. Att passera ett decimalvärde som 1295.00 eller 12.95 kommer att resultera i ett fel eller en felaktig debitering.

Flera betalningsmetoder

Det finns två sätt att kontrollera vilka betalningsmetoder som visas på värdsidan:

Alternativ A — payment_methods (enkelt filter). Passera en array med ett element för att begränsa beställningen till en betalningsmetod. Utelämna fältet helt för att visa alla metoder som är aktiverade för ditt konto.

Alternativ B — transactions array (rekommenderas för flera metoder). Lägg till en post per betalningsmetod. Varje transaktion får sin egen payment_url, och metoderna visas i arrayordning på den värdsida:

"transactions": [
  { "payment_method": "credit-card" },
  { "payment_method": "apple-pay" }
]

Fältet payment_methods på beställningar accepterar högst ett värde. För att erbjuda flera specifika metoder, använd alltid arrayen transactions. Om du behöver en återanvändbar länk med flera betalningsmetoder, överväg istället Betalningslänkar, som stöder en äkta payment_methods-array.

Retur-URL:er

Efter betalning omdirigeras kunden baserat på orderstatus och vilka URL:er du angett:

  • När både return_url och failure_url är satta:

    • cancelled, expired eller error → kunden omdirigeras till failure_url
    • Alla andra statusar → kunden omdirigeras till return_url
  • När bara return_url är satt:

    • Alla statusar → kunden omdirigeras till return_url

Använd failure_url för att visa en sida för nytt försök eller support vid misslyckade betalningar, medan return_url visar en orderbekräftelse. Om du bara behöver en destination räcker return_url ensamt.

Avbrytknappens beteende

Den hostade betalningssidan inkluderar en avbrytknapp. När kunden klickar på den omdirigeras de till failure_url (om angiven) eller return_url. Orderstatus övergår till cancelled. Verifiera alltid orderstatus via API:et eller webhooks istället för att förlita dig enbart på omdirigeringen.

Relaterade endpoints

  • Skapa order — skapa en betalningsorder och ta emot payment_url
  • Hämta order — kontrollera orderstatus efter betalning

On this page