Ana içeriğe geç

Mutabakat (Reconciliation)

Gün sonu mutabakat, ödeme işlemlerinizin banka kayıtlarıyla eşleştiğini doğrulama sürecidir.

Neden Gerekli?

SorunMutabakat ile
Eksik ödeme kaydıTespit edilir
Mükerrer tahsilatFark edilir
Tutarsız tutarlarBelirlenir
Başarısız iadeTakip edilir

Mutabakat Akışı

Günlük Rapor Çekme

Her gün sonunda Paylox API'den o güne ait işlemleri çekin:

import requests
from datetime import date

def get_daily_transactions(target_date):
response = requests.get(
"https://api.jetcheckout.com/api/v1/payment/transactions",
params={
"start_date": target_date.isoformat(),
"end_date": target_date.isoformat(),
"status": "completed",
"per_page": 100
}
)
return response.json()

today_transactions = get_daily_transactions(date.today())

Eşleştirme Mantığı

Her Paylox işlemini kendi veritabanınızdaki kayıtlarla order_id üzerinden eşleştirin:

def reconcile(paylox_transactions, local_orders):
mismatches = []

paylox_map = {t["order_id"]: t for t in paylox_transactions}
local_map = {o["ref"]: o for o in local_orders}

for order_id, paylox_tx in paylox_map.items():
local = local_map.get(order_id)
if not local:
mismatches.append({"type": "missing_local", "order_id": order_id})
elif local["amount"] != paylox_tx["amount"]:
mismatches.append({"type": "amount_mismatch", "order_id": order_id})

for order_id in local_map:
if order_id not in paylox_map:
mismatches.append({"type": "missing_paylox", "order_id": order_id})

return mismatches

Yaygın Uyumsuzluk Nedenleri

NedenAçıklamaÇözüm
Gecikmeli callbackWebhook geç teslim edildiİşlem durumunu API'den doğrulayın
Kısmi iadeİade tutarı yansımamışİade raporunu ayrıca kontrol edin
3DS timeoutMüşteri 3DS sayfasında beklediSession durumunu kontrol edin
Mükerrer kayıtAynı callback birden fazla geldiİdempotent handler kullanın

Otomatik Mutabakat

Günlük mutabakatı cron job ile otomatikleştirin:

from datetime import date, timedelta

def daily_reconciliation():
yesterday = date.today() - timedelta(days=1)
paylox_data = get_daily_transactions(yesterday)
local_data = get_local_orders(yesterday)
mismatches = reconcile(paylox_data["transactions"], local_data)

if mismatches:
send_alert_email(mismatches)
log_mismatches(mismatches)