Closed sebahattinkoc closed 4 years ago
Merhaba,
Encoding'i şu şekilde kullanabilirsiniz.
System.Text.Encoding.GetEncoding("ISO-8859-9").GetBytes(hashstr)
şu şekilde yaptım
VakifbankPaymentProvider.cs
Kaldırdım var httpParameters = new Dictionary<string, string>(); httpParameters.Add("xmldata", requestXml);
Ekledim var data = new StringContent("xmldata="+requestXml, System.Text.Encoding.UTF8, "application/json");
Kaldırdım var response = client.PostAsync(requestUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult();
Ekledim var response = client.PostAsync(requestUrl, data).GetAwaiter().GetResult();
Merhaba, Islemi pull request olarak gönderirseniz projeye dahil edelim katkınızı.
üstat son halini gönderirim, tam çalışır hale getirince.
ayrıca PaymentController 'de
public IActionResult ThreeDGate() {
//Eskisi /if (HttpContext.Session.TryGetValue(PaymentSessionName, out byte[] paymentInfo)) return RedirectToAction(nameof(Index));/
//Yenisi, ! ekledim if (!HttpContext.Session.TryGetValue(PaymentSessionName, out byte[] paymentInfo)) return RedirectToAction(nameof(Index));
....
Teşekkürler gördüğüm kadarıyla sample tarafında bayağı sorunlarımız mevcut :)
sefa bey ilginize tşk.ler, üzerinde çalışıyorum, takıldığım yerlerde sizi yoracağım.
public IActionResult Callback(IFormCollection form)
işleminde sanırım kendi sitemizden ayrılıp banka ödeme sayfasından döndüğümüzde Session'da tuttuğumuz veriler siliniyor! alttaki blokta paymentInfo null oluyor .
Session'daki verilerin silinmemesi bir yöntem varmıdır? tşk.
**if (!HttpContext.Session.TryGetValue(PaymentSessionName, out byte[] paymentInfo))
return RedirectToAction(nameof(Index));**
var paymentModel = JsonSerializer.Deserialize<PaymentViewModel>(paymentInfo);
if (paymentModel == null)
return RedirectToAction(nameof(Index));
Merhaba, Bunun için Cookie SameSite Policy'ye bakmalısınız. Chrome, firefox ve edge yakın zamandaki bir sürümde bu konuda bazı düzenlemeler yaptılar.
tşk.ler.
Selamlar. Nisan'da Chrome SameSite policy'yi değiştirdi. Diğer browser'larda çalışıyorsa ondandır. SessionId'yi tutan cookie'yi SameSite=None yapacak bir update yapmanız gerekir kullandığınız versiyona göre.
xml verisini iletmek için yukarıda değişiklikten bahsetmiştim, bankaya göndermiyormuş!
alttaki şekilde XML verisini yollayabiliyorum, ilgelenen arkadaşların işine yarayabilir.
string requestUrl = "https://setmpos.ykb.com/PosnetWebService/XML"; requestUrl += "?xmldata=" + requestXml;
string responseContent="";
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(requestUrl); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
responseContent = String.Format("Server error (HTTP {0}: {1}).", response.StatusCode, response.StatusDescription);
}
else
{
System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());
responseContent = sr.ReadToEnd().Trim();
}
}
üst bloktaki gönderim şeklini alttaki koda uyarlamaya çalıştım olmadı! üstad uyarlayabilirseniz hoş olur, tşk.
var httpParameters = new Dictionary<string, string>(); httpParameters.Add("xmldata", requestXml);
var response = client.PostAsync(requestUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult();
Selam, Bu tarz çözümlerinizi pull request olarak gönderirseniz katkı sağlamış ve aynı sorunu başkalarının yaşamasının önüne geçmiş olursunuz. Hep birlikte geliştirip sanal pos konularındaki belirsizlikleri ve sürekli yaşanan sorunları çözmek adına open-source olarak bu repoyu oluşturdum.
System.ArgumentException: 'ISO-8859-9' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
uyarısı alıyorum.
Banka dökümanında
Servis Genel Yapısı Posnet XML servisi, posnet işyerlerinin XML dokümanları göndererek posnet işlemi yapmalarını sağlayan bir servistir. İşyeri sistemlerinin ortam değişkeni olan <%XML_SERVICE_URL%> adresine (test ortamı: https://setmpos.ykb.com/PosnetWebService/XML) oluşturdukları xml dokümanını UTF8 URL Encode ile encode ettikten sonra “xmldata” parametresinde Content-Type=application/xwww-form-urlencoded; charset=utf-8 ile POST etmesi gerekmektedir. İşlem sonucu yine bir XML dokümanı olarak işyerine dönülür.
Yardımcı olabilirmisiniz ? tşk.ler