Merhabalar ;
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>