Paytm

Paytm (Hindistan) ödeme geçidi, kart, UPI, net bankacılık ve Paytm cüzdanı Paytm'in barındırdığı sayfada; yalnız INR.

Gereken bilgiler

Paytm Dashboard → API Keys sayfası (dashboard.paytmpayments.com/next/apikeys):

  • merchant_id: Merchant ID (MID)
  • merchant_key: Merchant Key (16 karakter; checksum bu anahtarla üretilir)

Panelinizde Ayarlar → Ödemeler → Yöntem ekle → Paytm seçin, iki değeri girin.

Test (staging): Staging MID ve anahtarı aynı API Keys sayfasında hesap açılır açılmaz verilir; canlı MID hesabınız aktive edildikten sonra gelir. Test çiftini girin, sandbox (test) modu kutusunu işaretleyin. Panel istekleri securestage.paytmpayments.com'a gönderir ve websiteName olarak WEBSTAGING kullanır. Canlıya geçerken canlı çifti girip kutuyu kaldırın; panel secure.paytmpayments.com'a gider ve websiteName olarak DEFAULT gönderir.

Callback adresi her ödemeye callbackUrl olarak eklenir; Paytm panelinde ayrıca bir ayar gerekmez. Adres kalıbı:

https://<panel-alan-adınız>/payments/paytm/callback

İsterseniz aynı adresi Paytm Dashboard'daki Payment Status webhook ayarına da yazabilirsiniz. O zaman Paytm sonucu müşterinin tarayıcısından bağımsız olarak sunucudan sunucuya da bildirir (müşteri tarayıcıyı kapatsa bile bakiye yüklenir). İki bildirim aynı biçimdedir ve aynı yoldan doğrulanır; bakiye iki kez yüklenmez. Paytm webhook için yalnız 443 portunu kabul eder.

Akış

  1. Müşteri tutarı girer ve Paytm'i seçer. Telefon numarası istenmez.
  2. Panel, Paytm'e imzalı bir Initiate Transaction isteği gönderir (orderId = ödeme referansımız, tutar INR) ve bir txnToken alır.
  3. Müşterinin tarayıcısı mid, orderId ve txnToken alanlarını Paytm'in Show Payment Page adresine form olarak gönderir; kart, UPI, net bankacılık ve cüzdan seçimi orada yapılır, sizin sunucunuza kart verisi hiç uğramaz.
  4. Ödeme bitince Paytm müşterinin tarayıcısını panelinizin callback adresine geri gönderir. Bu dönüşte sonuç alanları (ORDERID, TXNID, STATUS, TXNAMOUNT, …) ve merchant key ile üretilmiş bir CHECKSUMHASH vardır.
  5. Panel önce checksum'ı doğrular; sonra ödemeyi Paytm'in Transaction Status API'sine kendi imzasıyla sorar. Paytm TXN_SUCCESS derse ve orderId bizim ödememizse bakiye yüklenir; müşteri "Bakiye yükle" sayfasına başarı mesajıyla döner.
  6. TXN_FAILURE ise ödeme "başarısız" olarak kaydedilir, Paytm'in mesajı ödeme notuna yazılır. PENDING ise ödeme "beklemede" kalır (bankanın onayı gecikmiştir); Paytm sonucu daha sonra webhook ile bildirir ya da Admin → Ödemeler'den tamamlarsınız.

Checksum'ı tutmayan ya da başka bir MID'e ait bir dönüş yok sayılır. Aynı ödeme için ikinci bir başarı bildirimi (tarayıcı + webhook) bakiyeyi iki kez yüklemez.

Durumlar

Paytm Panel
TXN_SUCCESS tamamlandı, bakiye yüklendi
TXN_FAILURE başarısız (Paytm mesajı notta)
PENDING beklemede
NO_RECORD_FOUND dönüş yok sayılır

Transaction Status çağrısı yanıt vermezse TXN_SUCCESS iddiası beklemedeye düşürülür; bakiye yalnız Paytm'in imzalı yanıtıyla yüklenir.

Para birimleri

Paytm yalnız INR işler. Yöntemin para birimi INR olmalı; başka bir birimde ödeme başlatılamaz.

Sık sorunlar

  • "Checksum provided is invalid" (2005): merchant key yanlış ya da test/canlı anahtarlar karışmış. Test MID'i test anahtarıyla, canlı MID'i canlı anahtarla eşleştirin.
  • "Mid in the query param doesn't match" (2013): MID alanına boşluklu ya da eksik kopyalanmış bir değer girilmiş.
  • Ödeme başarılı ama bakiye yok: Admin → Ödemeler'de kaydın notuna bakın. Durum sorgusu hata verdiyse (anahtar yanlış, sandbox/canlı karışmış) ödeme beklemededir ve not orada.
  • Staging'de gerçek kart çalışmıyor: Paytm'in test araçlarını kullanın: herhangi bir Visa/Master numarası, ileri tarihli son kullanma, CVV 123, OTP 489871; cüzdan için 7777777777 / Paytm12345.
  • Callback'e ulaşılamıyor: Paytm yalnız HTTPS ve 443 portunu kabul eder; panelinizin alan adı henüz bize yönlenmediyse ödeme tamamlanamaz. Önce DNS devrini bitirin.