Satış(Peşin/Taksitli)

Satış (Peşin veya taksitli) işlem için aşağıdaki parametrelerin gönderilmesi gerekmektedir.

Request Parametreleri:

Alan Adı Tipi Gereklilik (Z/O) Açıklama Örnek Değer
PublicKey string Z TRPOS tarafından size verilen PublicKey Test verilerinde mevcuttur.
ApiKey string Z TRPOS tarafından size verilen ApiKey Test verilerinde mevcuttur.
Rnd string Z Her işlemde değişen değer 24072024182023
Hash string Z Doğrulama için gerekli HASH değeri Sha512 ile oluşturulmalıdır.
StoreType byte Z Ödeme Yöntemi 1: 3D, 2: Standart
TxnType byte Z İşlem Tipi 1: Satış
CardHolder string Z Kart Sahibi Adı Soyadı Test verilerinde mevcuttur.
CardNumber string Z Kart Numarası Test verilerinde mevcuttur.
ExpMonth string Z Kart Son Kullanım Tarihi – AY Test verilerinde mevcuttur.
ExpYear string Z Kart Son Kullanım Tarihi – YIL Test verilerinde mevcuttur.
Cv2 string Z Kart Güvenlik Numarası Test verilerinde mevcuttur.
Oid string Z Sipariş Numarası SP0123456789101112131415
Amount string Z İşlem Tutarı 100,56 (Küsüratlar ‘,’ ile ayrılacak.)
Installment string Z İşlem Taksit Sayısı 0,2,3,4,5,6,7,8,9,10,11,12
Currency byte Z İşlem Para Birimi 1: TL, 2: USD, 3: EUR
ReturnUrl string Z Satış işlemine ait cevapların döneceği URL http://www.site.com/return
UserName string O Müşteri adı ve soyadı Emin Kuzucu
UserIP string Z Müşteri IP adresi 127.0.0.1
UserPhone string O Müşteri telefon numarası 5325019450
UserEmail string O Müşteri e-posta adresi [email protected]
UserBasket string O Sepet içeriği JSON tipinde olmalıdır.
IntegratorId string O Entegratörlerin TR POS tarafındaki kimlik numaraları.
NOT : Altyapı sağlayıcılarından herhangi birini kullanmıyorsanız boş geçebilirsiniz.
Entegratör firmalara TR POS tarafından iletilecektir. Lütfen iletişime geçiniz.
PanCode string O Kart kayıt servisinden dönen token ile ödeme alabileceğiniz alan. 526***1-]oJt`-.gx^Q_@|0**

Örnek Satış Formu Yapısı:

Kopyalandı!

               <form action="https://vpostest.trpos.com/Payment/PaymentRequest" method="POST">
                  <input type="text" name="PublicKey" value="39308144DD24F47DD3C7ECFB8E54CC41BE4CF43BD1E8167D35398D769A3277B8" />
                  <input type="text" name="ApiKey" value="3F76D2BA-074F-4A83-989F-7AF1FBFC93E1" />
                  <input type="text" name="Rnd" value="24072024182023" />
                  <input type="text" name="Hash" value="{Sha512 Hash İçeriği}" />
                  <input type="text" name="StoreType" value="1" />
                  <input type="text" name="TxnType" value="1" />
                  <input type="text" name="CardHolder" value="Burhan Bulut" />
                  <input type="text" name="CardNumber" value="4155650100416111" />
                  <input type="text" name="ExpMonth" value="01" />
                  <input type="text" name="ExpYear" value="2050" />
                  <input type="text" name="Cv2" value="715" />
                  <input type="text" name="Oid" value="SP0123456789101112131415" />
                  <input type="text" name="Amount" value="100,56" />
                  <input type="text" name="Installment" value="0" />
                  <input type="text" name="Currency" value="1" />
                  <input type="text" name="ReturnUrl" value="www.site.com/return" />
                  <input type="text" name="UserName" value="Emin Kuzucu" />
                  <input type="text" name="UserIP" value="127.0.0.1" />
                  <input type="text" name="UserPhone" value="5325019450" />
                  <input type="text" name="UserEmail" value="[email protected]" />
                  <input type="text" name="UserBasket" value="{JSON Sepet İçeriği}" />
                  <input type="text" name="IntegratorId" value="106578" />
                  <input type="submit" value="Ödeme Yap" />
              </form>
                  
                

Response Verileri:

Alan Adı Tipi Gereklilik (Z/O)
TxnNo string TRPOS Tarafından Oluşturulan İşlem Numarası
TxnType string TxnType
ResultCode string Ödeme İşleminin Sonucu
ResultDetail string Ödeme İşlem Sonucuna Ait Açıklama
Amount string İşlem Tutarı
NetAmount string Komisyonlar düşüldükten sonra kalan müşteri hak ediş tutarı
CurrencyAmount string İşlem Tutarı döviz karşılığı (Eğer işlem farklı bir para birimi ile yapıldı ise)
NetSumCommissionAmount string İşlemin toplam komisyon tutarı
Currency string İşlem Para Birimi
AmountTL string İşlem Tutarı TL Karşılığı (Eğer işlem farklı bir para birimi ile yapıldı ise)
StoreType string Ödeme Yöntemi
Oid string Sipariş Numarası
Hash string İşlem doğruluğunun kontrol edilebilmesi için TRPOS tarafından gönderilen Hash değeri

Örnek Satış Formu Yapısı:

REQUEST:

Kopyalandı!

                    using Microsoft.AspNetCore.Mvc;
                    using Newtonsoft.Json;
                    using System.Security.Cryptography;
                    using System.Text;
                    namespace WebApplication1.Controllers
                    {
                        public class HomeController : Controller
                        {
                            // Sepet içeriği ürün bilgisi modeli
                            public class Product
                            {
                            public string Name { get; set; } // Adı
                            public double Price { get; set; } // Birim Fiyat
                            public int Quantity { get; set; } // Satın alım adedi
                            }
                            public async Task Test()
                            {
                            // TRPOS Tarafından verilen API bilgileri
                            string publicKey =
                            "39308144DD24F47DD3C7ECFB8E54CC41BE4CF43BD1E8167D35398D769A3277B8";
                            string apiKey = "3F76D2BA-074F-4A83-989F-7AF1FBFC93E1";
                            string secretKey =
                            "D7452D50390715218654C1D6CBF0E740B030618E098D9D04ED3176E0360C655F";
                            // Altyapı sistemini sağlayan entegratörün kimlik numarası.
                            string integratorId = "106578";
                            // Her işlemde benzersiz gönderilmesi gereken RND
                            değeristring rnd = DateTime.Now.Ticks.ToString();
                            // İşlem güvenlik şekli (Ödeme Yöntemi)
                            byte storeType = 1; // 1: 3D Secure, 2: None Secure
                            // İşlem tipi
                            byte txnType = 1; // 1: Satış
                            // KART BİLGİLERİ
                            string cardHolder = "Mehmet Emin Kuzucu"; // Kart sahibi adı
                            soyadıstring cardNumber = "4155650100416111"; // Kart
                            numarası string expMonth = "01"; // Kart Son Kullanım
                            Tarihi – AY (MM)
                            string expYear = "2050"; // Kart Son Kullanım Tarihi – YIL
                            (YYYY)string cv2 = "715"; // Kart Güvenlik Numarası
                            // Benzersiz sipariş numarası (Örnek olarak verilmiştir. Kendi sipariş numaranızı
                            kullanabilirsiniz.)
                            string oid = "SP" + DateTime.Now.Ticks.ToString();
                            // İşlem tutarı
                            string amount = "100,56"; // Ondalık olarak virgül (,) ve virgülden sonra iki
                            hane -Örnek: “100,99” veya “150” veya “1500,35”
                            // Taksit sayısı
                            byte installment = 0; // Örnek: 0,2,3,4,5,6,7,8,9,10,11,12
                            // Para birimi
                            byte currency = 1; // 1:TL, 2:USD, 3:EUR
                            Satış İşlemi Örnek .NET Kodları:
                            REQUEST:
                            // Satış işlemine ait cevapların döneceği URL
                            string returnUrl = "www.site.com/return";
                            // MÜŞTERİ BİLGİLERİ
                            string userName = "Emin Kuzucu";
                            string userPhone = "5325019450";
                            string userEmail = "[email protected]";
                            string userIp = HttpContext.GetServerVariable("HTTP_X_FORWARDED_FOR");
                            if (string.IsNullOrEmpty(userIp))
                            {
                            userIp = HttpContext.GetServerVariable("REMOTE_ADDR");
                            }
                            // Sepet içeriği
                            List products = new List()
                            {
                            new Product() { Name = "Ürün 1", Price = 50.28, Quantity = 1 },
                            new Product() { Name = "Ürün 2", Price = 50.28, Quantity = 4 },
                            };
                            new Product() { Name = "Ürün 3", Price = 300, Quantity = 2 }
                            string userBasket = JsonConvert.SerializeObject(products);
                            currency);
                            // HASH oluşturma fonksiyonu
                            string birlestir = string.Concat(apiKey, publicKey, rnd, oid, amount,
                            HMACSHA512 hmac = new HMACSHA512(Encoding.UTF8.GetBytes(secretKey));
                            byte[] b = hmac.ComputeHash(Encoding.UTF8.GetBytes(birlestir));
                            string hash = Convert.ToBase64String(b);
                            Dictionary formData = new Dictionary
                            {
                            { "PublicKey", publicKey },
                            { "ApiKey", apiKey },
                            { "Rnd", rnd },
                            { "Hash", hash },
                            { "StoreType", storeType.ToString() },
                            { "TxnType", txnType.ToString() },
                            { "CardHolder", cardHolder },
                            { "CardNumber", cardNumber },
                            { "ExpMonth",expMonth },
                            { "ExpYear", expYear },
                            { "Cv2", cv2 },
                            { "Oid", oid },
                            { "Amount", amount },
                            { "Installment", installment.ToString() },
                            { "Currency", currency.ToString() },
                            { "ReturnUrl", returnUrl },
                            { "UserName", userName },
                            { "UserIP", userIp },
                            { "UserPhone", userPhone },
                            { "UserEmail", userEmail },
                            { "UserBasket", userBasket },
                            { "IntegratorId", integratorId }
                            };
                            // TRPOS Satış İşlemi POST URL
                            string paymentURL = "https://vpostest.trpos.com/Payment/PaymentRequest";
                            using Microsoft.AspNetCore.Mvc;
                            using System.Security.Cryptography;
                            using System.Text;
                            namespace WebApplication1.Controllers
                            {
                            public class Ok : Controller
                            {
                            public IActionResult Index()
                            {
                            // TRPOS Tarafından verilen API bilgileri
                            string publicKey =
                            "39308144DD24F47DD3C7ECFB8E54CC41BE4CF43BD1E8167D35398D769A3277B8"
                            ;string apiKey = "3F76D2BA-074F-4A83-989F7AF1FBFC93E1";
                            string secretKey =
                            "D7452D50390715218654C1D6CBF0E740B030618E098D9D04ED3176E0360C655F";
                            // POST değerlerini alma/tanımlama
                            string txnNo = Request.Form["TxnNo"];
                            string txnType =
                            Request.Form["TxnType"];
                            string resultCode = Request.Form["ResultCode"];
                            string resultDetail =
                            Request.Form["ResultDetail"];string amount =
                            Request.Form["Amount"];
                            string currency =
                            Request.Form["Currency"]; string amountTL
                            = Request.Form["AmountTL"]; string
                            storeType = Request.Form["StoreType"];
                            string oid = Request.Form["Oid"];
                            string hash = Request.Form["Hash"];
                            using (HttpClient client = new())
                            {
                            formContent);
                            var formContent = new FormUrlEncodedContent(formData);
                            HttpResponseMessage response = await client.PostAsync(paymentURL,
                            if (response.IsSuccessStatusCode)
                            {
                            }
                            else
                            {
                            }
                            }
                            // Ekrana yazdırılması gereken TRPOS tarafından dönen HTML
                            var htmlContent = await response.Content.ReadAsStringAsync();
                            ViewBag.HtmlContent = htmlContent;
                            Console.WriteLine("HATA: " + response.StatusCode);
                            return View();
                            }
                    }
                    }
                  

RESPONSE:

Kopyalandı!

                      using Microsoft.AspNetCore.Mvc;
                      using System.Security.Cryptography;
                      using System.Text;
                      namespace WebApplication1.Controllers
                      {
                      public class Ok : Controller
                      {
                      public IActionResult Index()
                      {
                      // TRPOS Tarafından verilen API bilgileri
                      string publicKey =
                      "39308144DD24F47DD3C7ECFB8E54CC41BE4CF43BD1E8167D35398D769A3277B8"
                      ;string apiKey = "3F76D2BA-074F-4A83-989F7AF1FBFC93E1";
                      string secretKey =
                      "D7452D50390715218654C1D6CBF0E740B030618E098D9D04ED3176E0360C655F";
                      // POST değerlerini alma/tanımlama
                      string txnNo = Request.Form["TxnNo"];
                      string txnType =
                      Request.Form["TxnType"];
                      string resultCode = Request.Form["ResultCode"];
                      string resultDetail =
                      Request.Form["ResultDetail"];string amount =
                      Request.Form["Amount"];
                      string currency =
                      Request.Form["Currency"]; string amountTL
                      = Request.Form["AmountTL"]; string
                      storeType = Request.Form["StoreType"];
                      string oid = Request.Form["Oid"];
                      string hash = Request.Form["Hash"];
                      using (HttpClient client = new())
                      {
                      formContent);
                      var formContent = new FormUrlEncodedContent(formData);
                      HttpResponseMessage response = await client.PostAsync(paymentURL,
                      if (response.IsSuccessStatusCode)
                      {
                      }
                      else
                      {
                      }
                      }
                      // Ekrana yazdırılması gereken TRPOS tarafından dönen HTML
                      var htmlContent = await response.Content.ReadAsStringAsync();
                      ViewBag.HtmlContent = htmlContent;
                      Console.WriteLine("HATA: " + response.StatusCode);
                      return View();
                      }
                      }
                      }
                       RESPONSE:
                      // HASH oluşturma fonksiyonu
                      string birlestir = string.Concat(oid, publicKey, resultCode, amount.ToString());
                      HMACSHA512 hmac = new HMACSHA512(Encoding.UTF8.GetBytes(secretKey));
                      byte[] b = hmac.ComputeHash(Encoding.UTF8.GetBytes(birlestir));
                      string myHash = Convert.ToBase64String(b);
                      // HASH karşılaştırma ve doğrulama işlemi
                      if (hash.ToString() != myHash)
                      {
                      Console.WriteLine("HATA: Hash değeri doğru değil"); // HASH değeri hatalı
                      }
                      if (resultCode == "0000")
                      {
                      Başarılı
                      }
                      else
                      {
                      }
                      Console.WriteLine("Satış işlemi başarıyla tamamlandı."); // Satış İşlemi
                      Console.WriteLine("HATA: " + resultDetail); // Satış İşlemi Başarısız
                      return View();
                      }
                      }
                      }
                    

Satış İşlemi ResultCode Listesi ve Açıklamaları

ResultCode ResultDetails
0000 İşlem başarılı
0001 PublicKey gönderimi zorunludur.
0002 ApiKey gönderimi zorunludur.
0003 Rnd gönderimi zorunludur.
0004 Hash gönderimi zorunludur.
0005 StoreType gönderimi zorunludur.
0006 TxnType gönderimi zorunludur.
0007 CardHolder gönderimi zorunludur
0008 CardNumber gönderimi zorunludur.
0009 CardNumber formatı doğru değil.
0010 ExpYear gönderimi zorunludur.
0011 ExpYear formatı yanlış.
0012 ExpMonth gönderimi zorunludur.
0013 ExpMonth formatı yanlış.
0014 Cv2 gönderimi zorunludur.
0015 Oid gönderimi zorunludur.
0016 Amount gönderimi zorunludur.
0017 Installment gönderimi zorunludur.
0018 Installment formatı yanlış.
0019 Currency gönderimi zorunludur.
0020 Para birimi 1 : “TL” , 2 : “USD” yada 3 : “EUR” olarak gönderilmelidir.
0021 UserName gönderimi zorunludur.
0022 UserIP gönderimi zorunludur.
0023 UserPhone gönderimi zorunludur.
0024 UserEmail gönderimi zorunludur.
0025 UserBasket gönderimi zorunludur.
0026 UserBasket formatı yanlış.
0027 Site bilgileri alınamadı.
0028 Site bilgileri getirilemedi.
0029 Hash değerleri eşleşmiyor.
0030 VPos TempTransaction cevap alınamadı.
0031 Payment servisinden cevap alınamadı.
0033 UserBasket fiyat toplamı ile sipariş tutarı uyuşmuyor.
0035 Api bilgileri ile domain uyuşmuyor.
9999 Dinamik hata. (Sistem tarafından gönderilir.)