PDA

View Full Version : ساخت امضای rsa برای پرداخت آنلاین بانک پاسارگاد



حامد مصافی
سه شنبه 07 آذر 1396, 12:09 عصر
با سلام
در نمونه‌کد‌های منتشر شده بانک پاسارگاد خروجی php و asp.net متفاوته (بگذریم از اینکه سمپل asp.net کلا ایراد نحوی داره و کامپایل نمیشه) و سیستم خود بانک هم فقط با خروجی که مثال php تولید میکنه کار میکنه که اون هم یک کلاس ثانویه داره که بر طبق میل خودش داده رو sign میکنه.
حالا سوال اینه که کسی این کار رو در asp.net انجام داده؟ به چه صورت امضای rsa رو تولید کردید؟

با تشکر

hakim22
سه شنبه 07 آذر 1396, 16:30 عصر
من از همچین متدی استفاده میکنم :


public void SendToBank(string amount,
string invoiceNumber,
string redirectUrl = "http://mycallbackurl.com",
string actionId = "1003")
{
var timeStamp = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
var invoiceDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");


var rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PrivateKey);


var data = "#" + MerchantCode + "#" + TerminalCode + "#" + invoiceNumber + "#" + invoiceDate +
"#" + amount + "#" + redirectUrl + "#" + actionId + "#" + timeStamp + "#";


var signedData = rsa.SignData(Encoding.UTF8.GetBytes(data), new SHA1CryptoServiceProvider());


var signedString = Convert.ToBase64String(signedData);




var dp = new DataPost {Url = GatewayUrl, FormName = "form1", Method = "post"};


dp.AddKey("merchantCode", MerchantCode);
dp.AddKey("terminalCode", TerminalCode);
dp.AddKey("amount", amount);
dp.AddKey("redirectAddress", redirectUrl);
dp.AddKey("invoiceNumber", invoiceNumber);
dp.AddKey("invoiceDate", invoiceDate);
dp.AddKey("action", actionId);
dp.AddKey("sign", signedString);
dp.AddKey("timeStamp", timeStamp);
dp.Post();
}


که کد DataPost در خود نمونه کدهای پاسارگاد هست.

حامد مصافی
چهارشنبه 08 آذر 1396, 01:24 صبح
شخصا از این کد جواب گرفتی؟ یعنی کار میکنه در محیط واقعی؟