sametcodes / node-paytr

A node package for PayTR payment gateway
https://npmjs.com/package/node-paytr
9 stars 2 forks source link

callback post parametrelerinin alınamaması hk. #6

Closed mahiraltinkaya closed 3 years ago

mahiraltinkaya commented 3 years ago

Merhaba; callback fonksiyonunuza bildirim url den gelen post isteklerinin parametrelerinin olmadığı durum hiç başınıza geldi mi ? Yani paytr dan gönderilen post işleminde parametre olmadığı durumlar ?

sametcodes commented 3 years ago

Merhaba, daha önce böyle bir durum yaşamadım ve bununla ilgili kayıt açılmadı. PayTR'ye verdiğiniz callback bağlantısıyla ilgili veya gelen isteği karşıladığınız fonksiyonla ilgili bir problem olabilir.

Fonksiyon tanımınızı ve yönteminizi paylaşırsanız hatayı bulma konusunda yardımcı olmaya çalışırım.

mahiraltinkaya commented 3 years ago

Merhaba yeniden; Buradaki temel sorun req.body nin boş geliyor olması herhangi bir parametre gelmiyor. Boş bir objeden ibaret. Ödeme ve Token alma işlemlerinde sorun olmuyor. Burada getPost methodunuzu commentout a alinca doğal olarak ödeme gerçekleşiyor. Fakat merchant_oid ve status değerlerini post içerisinde olmamasından dolayı görmediğimden siparişimi kendi sistemimde tamamlayamiyorum.

ecommerce.post("/callback", function(req, res) {
  console.log(req.body);

  paytr.getPost(req.body, ({ merchant_oid, status }) => {
    console.log("STATUS=>", status);
    console.log("MERCHANT_OID=>", merchant_oid);
  });
  res.send("OK");
});
sametcodes commented 3 years ago

ecommorce.post hangi sınıfa ait bir fonksiyon? Anasayfadaki örnek koddaki fonksiyon express sınıfına ait.

paytr.getPost fonksiyonu PayTR'den gelen req.body içeriğinin hash kontrolünü sağlar, dolayısıyla doğru şekilde çalışabilmesi için öncelikle gelen POST isteğini parametrelerle birlikte karşılayabileceğinizden emin olmanız gerekiyor, yani req.body içeriği boş olmamalı. Eğer boş olursa veya hatalı bir değere sahip olursa hata döner.

/callback bitiş noktasına test amaçlı POST istekleri yollayarak req.body içeriğini alıp alamadığınızı test ettiniz mi? Etmediyseniz Postman ile deneyebilir ve sonucu buraya tekrar yazabilirsiniz.

mahiraltinkaya commented 3 years ago

ecommorce.post express.route ile genişletilmiş bir express fonksiyonu zaten buraya postman üzerinden yapılan isteklerde parametreleri rahatlıkla alabiliyorum herhangi bir sorun olmuyor. Yani özetle paytr a verdiğim bildirim url e postman üzerinden atılan parametreleri alıyorum. Paytr dan da ödemeler için bildirim geliyor fakat parametreleri bulunmuyor. İçeriği boş geliyor. Fakat bunu detek olarak ilettiğinizde binlerce işletmede geliyor size niye gelmiyor gibi bir cevap alıyorsunuz. Haliyle göbek bağınızı kendiniz kesmeniz gerekiyor. Node ile yazdığım bir e ticaret sitesinin sadece ödeme kısmının PHP ile yapılması gibi saçma sapan bir girişim içine girmez üzereyim.

sametcodes commented 3 years ago

Kullandığınız express versiyonu nedir? Express paketinizle ilgili bir sorun olduğunu düşünüyorum.

mahiraltinkaya commented 3 years ago

Günaydın; bodyparser kaynaklı olduğunu tespit ettim. Yalın bir konfigrasyonu mevcut idi. Rest servis olarak kullanıyorum. İstekleri JSON olarak alıyordum. Form data için farklı bir konfigrasyon ekledim. Bu sekilde problemi çözdüm. Aşağıda konfigrasyonu paylaştım.

let mullter = require("multer");
let  upload = multer();

app.use(upload.array());