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.) |