Softech Blog
Digital Assets & Financial Infrastructure

Jak zintegrować CoinGate z SaaS lub platformą B2B

Produkcyjny przewodnik obejmujący CoinGate orders, hosted checkout, callbacki, mapowanie statusów, idempotency, refundy, settlement i reconciliation.

4 min czytania
Jak zintegrować CoinGate z SaaS lub platformą B2B
Podsumowanie

Najważniejsze informacje z artykułu

Solidna integracja CoinGate utrzymuje provider order poza core domeną biznesową. Aplikacja tworzy własny payment intent, mapuje go do CoinGate order_id, kieruje na payment_url, przetwarza callbacki idempotentnie, weryfikuje status i kwoty, aktualizuje internal ledger i później uzgadnia provider ledger/settlement.

Najważniejsze wnioski
  • Trzymaj osobno invoice/order ID i CoinGate order ID.
  • Mapuj provider states do własnej state machine produktu.
  • Weryfikuj autentyczność callbacku i w razie potrzeby pobieraj krytyczny stan ponownie.
  • Refund traktuj jako osobny lifecycle.
  • Buduj dzienne reconciliation na provider ledger transactions i dowodach settlementu.
Kluczowe obserwacje

Kluczowe obserwacje i tezy

Najważniejsze obserwacje podsumowujące doświadczenia, decyzje i rezultaty opisane w materiale.

Nie rób z CoinGate order_id primary key produktu.
Callback to powiadomienie do weryfikacji stanu, nie zgoda na bezwarunkową zmianę business state.
Payment success i settlement completion to różne stany.
Reconciliation powinno korzystać z provider ledger transactions, nie tylko historii webhooków.

Najpierw architektura: CoinGate jest payment railem, nie domeną produktu

Najczystsza integracja CoinGate umieszcza payment-orchestration layer pomiędzy domeną biznesową a providerem. Faktura lub order nie powinny stawać się obiektem CoinGate. Mają własny lifecycle i referencję do osobnego payment intent.

Praktyczny łańcuch danych:

Business Order → Payment Intent → CoinGate Order → Payment Callback → Product Ledger → Settlement/Reconciliation.

Krok 1: utwórz product-owned payment intent

Przed wywołaniem CoinGate utwórz internal record zawierający klienta, obiekt biznesowy, expected price amount/currency, dozwoloną metodę, expiry policy i stabilny idempotency/reference key.

Nie używaj provider ID jako głównego identyfikatora biznesowego. Provider migration i retry są dużo łatwiejsze, gdy system posiada własną referencję.

Krok 2: utwórz CoinGate order

Create Order przyjmuje price amount/currency, settlement receive_currency, callback URL, return URLs i merchant-defined token. Zwraca payment_url do hosted checkoutu.

W typowym B2B cena handlowa może pozostać w EUR, a klient wybiera USDC w checkout providera. Settlement przebiega zgodnie z konfiguracją merchanta i capabilities providera.

Rekomendowany mapping

Twoje poleCoinGateCel
paymentIntentIdorder_id/title/referenceKorelacja systemów
amountDueprice_amountKwota handlowa
currencyprice_currencyCommercial source-of-truth
settlementPreferencereceive_currencyTarget settlement
callbackSecrettokenWsparcie walidacji callbacku

Krok 3: hosted checkout

Hosted checkout jest zwykle najlepszy dla pierwszej wersji produkcyjnej, bo provider kontroluje prezentację wspieranych aktywów/sieci i instrukcje płatnicze. Aplikacja nie hardcoduje network-specific address/amount UX.

Krok 4: callbacki przetwarzaj idempotentnie

CoinGate dokumentuje callbacki po zmianach stanu oraz retry do chwili, gdy merchant endpoint zwróci sukces. Udostępnia również callback replay w dashboardzie. Duplikaty są więc oczekiwaną cechą systemu.

Callback handler powinien:

  1. uwierzytelnić/zweryfikować event zgodnie z integracją,
  2. zapisać external event ID lub deduplication key,
  3. transakcyjnie pobrać payment intent,
  4. zweryfikować provider order, state, amount i currency context,
  5. wykonać idempotentne state transition,
  6. zapisać audit event,
  7. zwrócić sukces dopiero po trwałym zapisie.

Krok 5: mapuj status CoinGate do product state

CoinGate dokumentuje obecnie m.in. new, pending, confirming, paid, invalid, expired, canceled i stany refundów. Nie kopiuj ich 1:1 jako jedynego modelu produktu.

ProviderProduct paymentAkcja
new/pendingAWAITING_PAYMENTBrak entitlement
confirmingPAYMENT_DETECTEDTylko progress
paidPAIDCredit ledger / unlock według polityki
invalidMANUAL_REVIEW lub FAILEDBez automatycznego credit
expired/canceledCLOSEDNowy intent, jeśli potrzebny

Krok 6: weryfikuj przed credit

Dla krytycznych płatności callback powinien inicjować state verification, nie blind trust. Get Order zwraca szczegółowe informacje, w tym payment amounts, conversion data, fees, refunds i blockchain transaction data.

Krok 7: aktualizuj internal ledger

Gdy firma akceptuje płatność, twórz immutable ledger event powiązany z customerem, fakturą/orderem, payment intent i provider order. Provider status i product credit trzymaj osobno.

Model danych opisuje przewodnik internal ledger.

Krok 8: refund to osobny lifecycle

Refund nie oznacza „cofnij payment status do unpaid”. To nowe zdarzenie finansowe z własną kwotą, walutą, destination, provider refund ID, statusem i audit trailem. CoinGate ma osobne refund APIs i callbacki statusów refundu.

Krok 9: uzgadniaj provider ledger i settlement

Callback informuje o zmianie stanu. Reconciliation dowodzi, że financial movements się zgadzają. CoinGate udostępnia ledger transactions z filtrami m.in. po dacie, walucie, transaction type i source.

Daily job powinien porównywać:

  1. product payments zaakceptowane w oknie,
  2. CoinGate orders i ledger transactions,
  3. provider fees i refunds,
  4. withdrawal/settlement records,
  5. bank evidence przy fiat settlement.

Zobacz pełny przewodnik reconciliation.

Testing checklist

  • normalna płatność USDC,
  • duplicate callback,
  • callback out of order,
  • expired payment,
  • invalid/manual review,
  • aplikacja zwraca 500 i callback jest replayed,
  • amount/reference mismatch,
  • pełny i częściowy refund,
  • reconciliation mismatch,
  • czasowa niedostępność API providera.

Anti-patterns

„Callback = paid”

Callback jest inputem. System decyduje, czy transition jest prawidłowe.

„Status CoinGate = cały payment model”

Provider state jest węższy niż business state. Produkt potrzebuje czasem osobnego entitlement, settlement, refund i manual review.

„Nie potrzebujemy ledgera, provider ma raporty”

Provider reporting nie zastępuje zapisu, dlaczego customer został credited.

„Reconciliation zrobimy później”

Później zwykle oznacza dopiero po pojawieniu się wolumenu, przy którym brakujące referencje są kosztowne.

Monitoring i observability

Wystaw metryki dla created orders, checkout conversion, płatności stuck in confirming, callback failures, callback processing latency, invalid payments, refund failures i settlement mismatches. Provider IDs powinny być wyszukiwalne w operator panel, aby support mógł przejść od customer/invoice do dokładnego provider object bez ręcznego querying production DB.

Security boundary

CoinGate API token trzymaj server-side, poza kodem browsera, i ograniczaj dostęp zgodnie z konfiguracją dostępną dla konta. Callback endpoint jest publicznym HTTPS endpointem, ale nie może przyjmować business mutations z dowolnego payloadu. Authentication, reference validation i idempotency muszą wydarzyć się przed product credit.

Sandbox-to-production rollout

Sandbox służy do weryfikacji integration contracts, ale przed pierwszą live payment potrzebny jest production runbook. Powinien obejmować callback replay, provider outage, failed refund, settlement delay, manual status verification i escalation ownership. Przed rolloutem na wszystkich klientów wykonaj low-value live transactions.

Gdzie CoinGate pasuje najlepiej

CoinGate pasuje tam, gdzie produkt chce managed crypto checkout i provider-side settlement, ale business logic, entitlement i reconciliation pozostają w aplikacji. Samą decyzję architektoniczną opisuje gateway vs custom wallet infrastructure.

Model rozwiązania

Kluczowe elementy i zależności

CoinGate Integration Boundary

Utrzymuj provider state za warstwą payment orchestration.

Warstwa 1
Business order

Faktura, subskrypcja lub zakup.

Warstwa 2
Payment intent

Twój trwały kontekst płatności.

Warstwa 3
CoinGate order

Zewnętrzny execution object i payment_url.

Warstwa 4
Callback adapter

Autentykacja, deduplikacja, weryfikacja stanu i mapping.

Warstwa 5
Product ledger

Akceptacja biznesowa i downstream actions.

Warstwa 6
Reconciliation

Provider ledger, fee, refundy i settlement evidence.

Źródła i kontekst

Informacje wspierające analizę

USDC is described by Circle as an e-money token under MiCA for the EEA.

MiCA establishes an EU framework for crypto-assets and related services not already covered by other EU financial-services legislation.

CoinGate Create Order returns payment_url and supports callback_url, token, price/receive currencies and optional shopper data.

CoinGate documents callback retries until the merchant returns HTTP 200 or 204 and provides a dashboard tool to re-send callbacks.

CoinGate Get Order exposes payment, conversion, fee, refund and blockchain transaction information.

CoinGate exposes ledger transactions for reconciliation and supports filtering by date, currency, type and source.

CoinGate provides an API for merchant refunds linked to an order and ledger account.

FAQ

Czy CoinGate callback jest finalnym source of truth?
Traktuj callback jako event zewnętrzny. Zweryfikuj go, deduplikuj i sprawdź order state oraz kwoty wymagane przez logikę biznesową przed zaksięgowaniem internal ledgera.
Jaki status CoinGate powinien odblokować produkt?
Reguła biznesowa powinna mapować status model CoinGate do product state. CoinGate opisuje paid jako płatność potwierdzoną i zaksięgowaną merchantowi; produkt nadal powinien sprawdzić kontekst orderu, kwoty i waluty.
Czy potrzebuję reconciliation, jeśli CoinGate ma dashboard?
Tak. Reconciliation uzgadnia rekordy biznesowe i internal ledger z provider transactions, fee, refundami i settlement evidence.
Czytaj dalej

Powiązane artykuły

Materiały, które rozwijają temat i uzupełniają go o dodatkowy kontekst praktyczny.

Autor

Matt Dudzicz · Softech.app

Founder

Founder Softech.app, skoncentrowany na product engineeringu, infrastrukturze digital assets, custom software i systemach biznesowych AI-native.

LinkedIn
Następny krok
Planujesz wdrożenie CoinGate w istniejącym produkcie?
Zmapujemy order lifecycle, hosted checkout, callbacks, authoritative status checks, refundy oraz reconciliation settlementu.