私たちの側で注文を処理する必要があるチェックアウトを行うときに、支払いゲートウェイとの統合を行う必要があり、支払いゲートウェイの URL に投稿する必要があります。サーバー側で注文を処理した後、支払いゲートウェイプロバイダーにポスト経由でデータを送信する必要があるコントローラー b/c でリダイレクトを使用できないため、cshtml では、デフォルトのポストは、注文を処理するアクションになります。その後、コントローラー内でポストを行う必要があります。 URL を変更するペイメント ゲートウェイに再度アクセスすると、クレジット カード情報が取得され、プロバイダがクレジット カード情報を取得した後、制御が再び当社のサイトに戻ります。私の質問が明確であることを願っています
注文を保存した後、ブラウザーを PAYU ページに移動する必要があります。
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");
}
}