当我们结帐时,我必须与支付网关集成,我们需要在我们这边处理订单,然后我们需要发布到支付网关 url。我不能在控制器中使用重定向 b/c 需要在我们的服务器端处理订单后通过 post 向支付网关提供商发送数据,因此在 cshtml 中,默认帖子将发送到我们在控制器内部处理订单的操作之后我需要做一个帖子再次访问将更改 URL 和信用卡信息的支付网关,并且在提供商获取信用卡信息后,控制权再次返回到我们的网站。我希望我的问题很清楚
保存订单后,我需要将浏览器移动到 PAYU 页面,这不起作用 b/c MerchantReferenceNumber 是通过邮寄发送的,并且重定向被拒绝访问。
private void PostFormToPayU()
{
string url = "https://secure.safeshop.co.za/SafePay/Lite/Index.asp";
var webClient = new WebClient();
try
{
NameValueCollection vals = new NameValueCollection();
vals.Add("SafeKey", "{XXXX-XXX-XXX-XX-XXXXXX}");
vals.Add("MerchantReferenceNumber", "Test2");
vals.Add("TransactionAmount", "599");
vals.Add("CurrencyCode", "ZAR");
vals.Add("ReceiptURL", "http://localhost:47638/Home/About");
vals.Add("FailURL", "http://localhost:47638/Home/New");
vals.Add("TransactionType", "Auth");
byte[] responseArray = webClient.UploadValues(url, vals);
Stream s = new MemoryStream(responseArray);
Redirect("https://secure.safeshop.co.za/SafePay/Lite/Index.asp");
//return new System.Net.Response(responseArray, (int)HttpStatusCode.OK);
Console.WriteLine("stop");
}
catch (WebException e)
{
var response = (HttpWebResponse)e.Response;
//byte[] responseBytes = IOUtil.StreamToBytes(response.GetResponseStream());
//return new Response(responseBytes, (int)response.StatusCode);
Console.WriteLine("stop");
}
}