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äge | Beteende |
|---|---|
manual | Du 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. |
delayed | Medel debiteras automatiskt när expiration_period löper ut. |
{
"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:
| Typ | Beskrivning |
|---|---|
physical | Fysisk produkt |
discount | Rabattbelopp |
shipping_fee | Fraktkostnad |
sales_tax | Moms |
digital | Digital produkt |
gift_card | Presentkort |
store_credit | Butikskredit |
surcharge | Tilläggsavgift |
Debitera betalningar
Debitera per orderrad
POST /v1/orders/{id}/transactions/{transaction_id}/captures/orderlines{
"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{
"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{
"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{
"description": "Partial void",
"amount": 1500
}Frågeparametrar
Lägg till frågeparametrar för att inkludera ytterligare detaljer i svaret:
| Parameter | Beskrivning |
|---|---|
?fields[]=order_line_details | Inkludera uppdelning per orderrad |
?fields[]=amount_details | Inkludera 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.
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
- Debitera per belopp — debitera ett specifikt belopp från en auktoriserad order
- Debitera per orderrad — debitera specifika orderrader
- Makulera per belopp — makulera ett specifikt belopp från en auktoriserad order
- Makulera per orderrad — makulera specifika orderrader