سلام وقت بخیر
جهت انتقال کاربر به درگاه پرداخت از کد زیر استفاده میکنم و همه چیز درست ولی در زمان انتقال کاربر به درگاه کد اجرا میشه ولی هیچ اتفاقی نمیوفتی.مشکل از چی میتونه باشه در core 2 این مشکل وجود نداره.دوستان اطلاعاتی دارن.سپاسگزارم
private async Task<bool> MelliPayment(long price, string redirectPage, long paymentId) {
try
{
// سه مورد زیر توسط بانک به شما ارسال می شود
// اطلاعات زیر برای تست درگاه بانک می باشد
// شماره پذیرنده
string merchantId = "548";
// شماره ترمینال
string terminalId = "FDrnmDE6";
//کلید امنیتی یا کد امنیتی
string merchantKey = "ZmM0OGFjNzobrmstcYxMWU4MjYw";
TripleDESCryptoServiceProvider symmetricTripleDES = new TripleDESCryptoServiceProvider();
var dataBytes = Encoding.UTF8.GetBytes(string.Format("{0};{1};{2}" , terminalId, paymentId, price));
symmetricTripleDES.Mode = CipherMode.ECB;
symmetricTripleDES.Padding = PaddingMode.PKCS7;
var encryptor = symmetricTripleDES.CreateEncryptor(Convert.FromBas e64String(merchantKey), new byte[8]);
// رمز نگاری اطلاعات با مرچنت کی
var signData = Convert.ToBase64String(encryptor.TransformFinalBlo ck(dataBytes, 0, dataBytes.Length));
//var signData = Encryptword(string.Format("{0};{1};{2}", terminalId, paymentId, price), merchantKey);
// آدرس ای پی آی پرداخت
var ipgUri = "https://sandbox.banktest.ir/melli/sadad.shaparak.ir/VPG/api/v0/Request/PaymentRequest";
// اطلاعات زیز به آدرس بالا ارسال خواهد شد
var data = new
{
TerminalId = terminalId,
MerchantId = merchantId,
Amount = price,
SignData = signData,
ReturnUrl = redirectPage,
LocalDateTime = DateTime.Now,
OrderId = paymentId,
//MultiplexingData = MultiplexingData
};
// فراخوانی متد درخواست پرداخت
PayResultData res = await CallApiPayRequest<PayResultData>(ipgUri, data);
if (res != null)
{
// در صورتی که رسکود 0 باشد یعنی توکن توسط بانک ارسال شده و امکان اتصال به بانک وجود
if (res.ResCode == "0")
{
// اضافه کردن توکن ارسالی بانک به آدرس زیر و سپس هدایت کردن کاربر به صفحه پرداخت
Response.Redirect(string.Format("https://sandbox.banktest.ir/melli/sadad.shaparak.ir/VPG/Purchase?token={0}", res.Token),false);
}
else
{
// ثبت اطلاعات خطا در دیتابیس
UpdatePayment(paymentId, res.ResCode, res.Description, null, null, false);
ViewBag.Message = res.Description;
}
}
else
{
ViewBag.message = "در حال حاظر امکان اتصال به این درگاه وجود ندارد ";
}
}
catch (Exception ex)
{
ViewBag.message = "در حال حاظر امکان اتصال به این درگاه وجود ندارد ";
}
return false;
}