Closed mahiraltinkaya closed 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.
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");
});
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.
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.
Kullandığınız express versiyonu nedir? Express paketinizle ilgili bir sorun olduğunu düşünüyorum.
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());
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 ?