case study · integrations

Payment Systems

I built the payment infrastructure for consumer stores end to end: 9 providers, payment institutions and bank virtual POS systems, run behind a single flow. Later, at Deneyimsoft, I added new providers to the payment integration module built with .NET Core Web API and improved its error handling, logging and reporting.

  • .NET Core Web API
  • 3D Secure
  • Webhooks
  • Virtual POS

// flow

  1. Cart

    Amount, installment choice and order details become a payment request; every attempt is logged.

  2. BIN / installments

    The first digits of the card (BIN) identify the bank; installment options and the provider that processes the payment are chosen accordingly.

  3. Virtual POS

    The request goes to the chosen provider. Each provider's different API sits behind a common payment interface.

  4. 3D Secure

    The customer is sent to the bank's verification page; on return, the result and its signature are verified.

  5. Webhook

    The provider's notification is accepted only with a valid signature. Even if the same notification arrives more than once, it is applied once (idempotent).

  6. Order

    Once the payment is confirmed the order is created; refunds and cancellations run through the same flow. A service that periodically re-queries delayed responses catches payments whose confirmation was missed.

// problem → solution → result

problem
Turning each provider's different API, 3D Secure and notification flow into one consistent payment process, despite delayed or repeated notifications.
solution
BIN- and installment-based bank routing; signature-verified, idempotent webhooks; a service that periodically re-queries delayed responses; transaction logging and reporting.
result
One payment infrastructure running on 9 providers; duplicate transactions and "paid but not confirmed" orders are gone.

// technical notes

  • Provider-specific code sits behind a common payment interface; adding a provider doesn't change the rest of the flow.
  • Signature verification and idempotency checks on webhooks: a repeated notification never creates a duplicate transaction.
  • A service that re-queries delayed bank responses eliminated "paid but not confirmed" orders.
  • Every step is logged and reported; when a payment gets stuck, you can see exactly where.

// where

  • DeneyimsoftSoftware Developer · 2025 — 2026
  • Ersa YazılımSoftware Developer · 2022 — 2025
all work

keyboard shortcuts

j / k
next / previous section
g g / G
top / bottom
/
type in the terminal
r
quick summary
?
this list
Esc
close

privacy and cookies

data controller
Emirhan Göl · [email protected]
contact form
The name, email and message you send through the form or the terminal's mail command are forwarded to me as an email through my email provider, so I can reply. They are not stored in a database on this site and are not shared with anyone else.
abuse prevention
To stop the form from being abused with bulk submissions, your IP address is kept for at most 10 minutes, in server memory only.
analytics and cookies
If you allow it, Google Analytics is loaded for visit statistics and sets cookies; this data is processed on Google's servers abroad. If you don't, Google Analytics is never loaded and no cookies are set. You can change your choice below at any time.
stored in your browser
Things like your cookie choice and your snake high score are kept only in your browser and are never sent to the server.
your rights
To exercise your rights under Turkish data protection law (KVKK, article 11), such as access, correction or deletion, email [email protected].