Paytr Sanal Pos Entegre Yaparken paytr_token gonderilmedi veya gecersiz hatası daha önce bir çok kez iframe vs kullandım şuan direkt api ile kendi formumu yapmak istiyorum örnek kodları birebir aynı yaptım bu hatayı alıyorum.
Kodlarım ;
merchant_id = "xx"; merchant_key = "xx"; merchant_salt = "xx"; // // Müşterinizin sitenizde kayıtlı veya form vasıtasıyla aldığınız eposta adresi emailstr = "info@siteniz.com"; // // Tahsil edilecek tutar. payment_amountstr = "100"; // // Sipariş numarası: Her işlemde benzersiz olmalıdır!! Bu bilgi bildirim sayfanıza yapılacak bildirimde geri gönderilir. merchant_oid = "safdasfkjldsa121232"; // // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız ad ve soyad bilgisi user_namestr = "user name"; // // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız adres bilgisi user_addressstr = "merke Merkez"; // // Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız telefon bilgisi user_phonestr = "08505555511"; // // Başarılı ödeme sonrası müşterinizin yönlendirileceği sayfa // !!! Bu sayfa siparişi onaylayacağınız sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır! // !!! Siparişi onaylayacağız sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü). merchant_ok_url = "http://siteniz.com/Success"; // // Ödeme sürecinde beklenmedik bir hata oluşması durumunda müşterinizin yönlendirileceği sayfa // !!! Bu sayfa siparişi iptal edeceğiniz sayfa değildir! Yalnızca müşterinizi bilgilendireceğiniz sayfadır! // !!! Siparişi iptal edeceğiniz sayfa "Bildirim URL" sayfasıdır (Bakınız: 2.ADIM Klasörü). merchant_fail_url = "http://siteniz.com/Failed"; // // !!! Eğer bu örnek kodu sunucuda değil local makinanızda çalıştırıyorsanız // buraya dış ip adresinizi (https://www.whatismyip.com/) yazmalısınız. Aksi halde geçersiz paytr_token hatası alırsınız. user_ip = "alinanipadresi"; if (user_ip == "" || user_ip == null) { user_ip = Request.ServerVariables["REMOTE_ADDR"]; } // // ÖRNEK $user_basket oluşturma - Ürün adedine göre object'leri çoğaltabilirsiniz object[][] user_basket = { new object[] {"Örnek ürün 1", "18.00", 1}, // 1. ürün (Ürün Ad - Birim Fiyat - Adet) new object[] {"Örnek ürün 2", "33.25", 2}, // 2. ürün (Ürün Ad - Birim Fiyat - Adet) new object[] {"Örnek ürün 3", "45.42", 1}, // 3. ürün (Ürün Ad - Birim Fiyat - Adet) }; /* ############################################################################################ */ // Alabileceği değerler; advantage, axess, combo, bonus, cardfinans, maximum, paraf, world, saglamkart card_type = "bonus"; // // Hata mesajlarının ekrana basılması için entegrasyon ve test sürecinde 1 olarak bırakın. Daha sonra 0 yapabilirsiniz. debug_on = "1"; // // Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir. test_mode = "0"; // // 3D'siz işlem non_3d = "0"; // // Non3d Test Failed non3d_test_failed = "0"; // // Taksit Sayısı installment_count = "0"; // // Ödeme türü payment_type = "card"; // // Post adresi string post_url = "https://www.paytr.com/odeme"; // // Para birimi olarak TL, EUR, USD gönderilebilir. USD ve EUR kullanmak için kurumsal@paytr.com // üzerinden bilgi almanız gerekmektedir. Boş gönderilirse TL geçerli olur. currency = "TL"; // // // Sepet içerği oluşturma fonksiyonu, değiştirilmeden kullanılabilir. JavaScriptSerializer ser = new JavaScriptSerializer(); user_basket_json = ser.Serialize(user_basket); // Token oluşturma fonksiyonu, değiştirilmeden kullanılmalıdır. string Birlestir = string.Concat(merchant_id, user_ip, merchant_oid, emailstr, payment_amountstr.ToString(), payment_type, installment_count, currency, test_mode, non_3d, merchant_salt); HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(merchant_key)); byte[] b = hmac.ComputeHash(Encoding.UTF8.GetBytes(Birlestir)); token = Convert.ToBase64String(b);
<form action="https://www.paytr.com/odeme" method="post"> Kart Sahibi Adı: <input type="text" name="cc_owner" value="TEST KARTI"><br> Kart Numarası: <input type="text" name="card_number" value="9792030394440796"><br> Kart Son Kullanma Ay: <input type="text" name="expiry_month" value="12"><br> Kart Son Kullanma Yıl: <input type="text" name="expiry_year" value="99"><br> Kart Güvenlik Kodu: <input type="text" name="cvv" value="000"><br> <input type="hidden" name="merchant_id" value="<%=merchant_id %>"> <input type="hidden" name="user_ip" value="<%=user_ip %>"> <input type="hidden" name="merchant_oid" value="<%=merchant_oid %>"> <input type="hidden" name="email" value="<%=emailstr %>"> <input type="hidden" name="payment_type" value="<%=payment_type %>"> <input type="hidden" name="payment_amount" value="<%=payment_amountstr %>"> <input type="hidden" name="currency" value="<%=currency %>"> <input type="hidden" name="test_mode" value="<%=test_mode %>"> <input type="hidden" name="non_3d" value="<%=non_3d %>"> <input type="hidden" name="merchant_ok_url" value="<%=merchant_ok_url %>"> <input type="hidden" name="merchant_fail_url" value="<%=merchant_fail_url %>"> <input type="hidden" name="user_name" value="<%=user_namestr %>"> <input type="hidden" name="user_address" value="<%=user_addressstr %>"> <input type="hidden" name="user_phone" value="<%=user_phonestr %>"> <input type="hidden" name="user_basket" value="<%=user_basket_json %>"> <input type="hidden" name="debug_on" value="<%=debug_on %>"> <input type="hidden" name="paytr_token" value="<%=token %>"> <input type="hidden" name="non3d_test_failed" value="<%=non3d_test_failed %>"> <input type="hidden" name="installment_count" value="<%=installment_count %>"> <input type="hidden" name="no_installment" value="0"> <input type="hidden" name="max_installment" value="0"> <input type="hidden" name="lang" value="tr"> <input type="hidden" name="card_type" value="<%=card_type %>"> <input type="submit" value="Submit"> </form>