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://pay.costplus.online/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://pay.costplus.online/4851e31c.../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 ören/cent. 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_methodsNejFilter to a single payment method (e.g. ["credit-card"]). Omit to show all enabled methods. For multiple specific methods, use the transactions array instead
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 i minsta valutaenhet (ören/cent). Att ange 1295 innebär 12,95 i den angivna valutan. Att ange 1295.00 eller 12.95 resulterar i ett fel eller en felaktig debitering.

Flera betalningsmetoder

För att erbjuda flera specifika betalningsmetoder, lägg till flera poster i transactions-arrayen. Ordningen på den hostade sidan matchar arrayns ordning:

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

The payment_methods field on orders accepts at most one value. To offer multiple specific methods, always use the transactions array. If you need a reusable link with multiple payment methods, consider Payment Links instead, which support a true 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