Cost+Docs

Auktoriseringar, debiteringar & makuleringar

Hantera flöden för betalningsauktorisering, debitering och makulering

Vissa betalningsmetoder stöder ett tvåstegsflöde: först auktorisera (reservera medel), sedan debitera (samla in medlen) eller makulera (frigör reservationen).

Debiteringslägen

Ange capture_mode på ordern för att styra när medel debiteras:

LägeBeteende
manualDu debiterar uttryckligen när du är redo (t.ex. efter frakt). Om du inte debiterar innan ordern löper ut går auktoriseringen förlorad och kan inte debiteras.
delayedMedel debiteras automatiskt när expiration_period löper ut.
POST /v1/orders/ (manual capture)
{
  "currency": "EUR",
  "amount": 5000,
  "capture_mode": "manual",
  "return_url": "https://www.example.com",
  "webhook_url": "https://www.example.com/webhook",
  "transactions": [
    {
      "payment_method": "credit-card"
    }
  ]
}

Med manual-debitering måste du debitera innan orderns utgångsperiod går ut. När den löpt ut frigörs auktoriseringen och medlen kan inte debiteras. Ange en lämplig expiration_period för din leveranstidslinje.

Du kan ange capture_mode på ordernivå utan att specificera transactions. Den hostade betalningssidan visar då bara betalningsmetoder som stöder det angivna debiteringsläget.

Kontrollera debiteringsbara belopp

Innan du debiterar kan du kontrollera hur mycket som är tillgängligt för debitering genom att begära amount_details:

curl -u YOUR_API_KEY: \
  "https://api.costplus.online/v1/orders/{order_id}/?fields[]=amount_details"

Svaret innehåller ett amount_details-objekt:

{
  "amount": 5000,
  "amount_details": {
    "capturable": 5000,
    "captured": 0,
    "refundable": 0,
    "refunded": 0,
    "voidable": 5000,
    "voided": 0
  }
}

Orderrader

Vid användning av debiteringar och makuleringar per orderrad, använd dessa typer:

TypBeskrivning
physicalFysisk produkt
discountRabattbelopp
shipping_feeFraktkostnad
sales_taxMoms
digitalDigital produkt
gift_cardPresentkort
store_creditButikskredit
surchargeTilläggsavgift

Debitera betalningar

Debitera per orderrad

POST /v1/orders/{id}/transactions/{transaction_id}/captures/orderlines
Request body
{
  "description": "Shipping item #1",
  "order_line": {
    "merchant_order_line_id": "item-001",
    "quantity": 1
  }
}

Debitera per belopp

POST /v1/orders/{id}/transactions/{transaction_id}/captures/amount
Request body
{
  "description": "Partial capture",
  "amount": 2500
}

Makulera betalningar

Makulering frigör de auktoriserade medlen tillbaka till kunden.

Makulera per orderrad

POST /v1/orders/{id}/transactions/{transaction_id}/voids/orderlines
Request body
{
  "description": "Voiding item #2",
  "order_line": {
    "merchant_order_line_id": "item-002",
    "quantity": 1
  }
}

Makulera per belopp

POST /v1/orders/{id}/transactions/{transaction_id}/voids/amount
Request body
{
  "description": "Partial void",
  "amount": 1500
}

Frågeparametrar

Lägg till frågeparametrar för att inkludera ytterligare detaljer i svaret:

ParameterBeskrivning
?fields[]=order_line_detailsInkludera uppdelning per orderrad
?fields[]=amount_detailsInkludera beloppuppdelning

Optimistisk låsning

Debiterings- och makuleringsendpoints stöder ETag-baserad optimistisk låsning via headern if-match. Detta förhindrar race conditions när flera system försöker debitera samma transaktion.

Capture with optimistic locking
curl -X POST https://api.costplus.online/v1/orders/{id}/transactions/{tid}/captures/amount \
  -u {api_key}: \
  -H "Content-Type: application/json" \
  -H "if-match: \"etag-value\"" \
  -d '{"description": "Capture", "amount": 2500}'

Om ETag:en inte matchar (ordern har ändrats sedan du senast hämtade den) får du ett 412 Precondition Failed-svar.

Cost+ stöder en debitering per auktorisering, och makuleringar kan bara behandlas innan någon debitering. Planera din debiteringsstrategi därefter.

Relaterade endpoints

On this page