es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear una solicitud y redirigir al cliente a la pasarela de pago de MasterCard utilizando C# y ASP.NET MVC 5?

Este podría ser el código que intenté.

Estoy intentando redirigir al cliente a la pasarela de pago y después de que se haya realizado el pago, regresar mediante la URL de retorno.

Pero no descubrí cómo:
“`
[HttpPost]
public ActionResult PaymentGateway()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://abc.gateway.mastercard.com/api/rest/version/6/merchant/xxx/order/1/transaction/1");
httpWebRequest.Credentials = CredentialCache.DefaultCredentials;

<pre><code>string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("xxxx:xxxx"));

httpWebRequest.Headers.Add("Authorization", "Basic " + credentials);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"apiOperation\":\"CAPTURE\"," +
"\"order.amount\":\"100.000\"}" +
"\"order.currency\":\"USD\"}" +
"\"browserPayment.redirectUrl\":\"https:\\example.com\callback\"}";

streamWriter.Write(json);
}

// cómo enviar la solicitud ?
return ??? ;
</code></pre>

}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para redirigir al cliente a la pasarela de pago después de que se haya completado el pago y luego regresar mediante una URL de retorno, debes realizar una redirección HTTP a la URL de la pasarela de pago. Para hacer esto, puedes modificar el código de la siguiente manera:

    [HttpPost]
    public ActionResult PaymentGateway()
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://abc.gateway.mastercard.com/api/rest/version/6/merchant/xxx/order/1/transaction/1");
        httpWebRequest.Credentials = CredentialCache.DefaultCredentials;
    
        string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("xxxx:xxxx"));
    
        httpWebRequest.Headers.Add("Authorization", "Basic " + credentials);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
    
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{\"apiOperation\":\"CAPTURE\"," +
                                  "\"order.amount\":\"100.000\"}" +
                                  "\"order.currency\":\"USD\"}" +
                                  "\"browserPayment.redirectUrl\":\"https://example.com/callback\"}";
    
            streamWriter.Write(json);
        }
    
        // realizar la redirección HTTP a la URL de la pasarela de pago
        string redirectUrl = "https://abc.gateway.mastercard.com/paymentflow/start/?OrderId=1&TransactionId=1";
        return Redirect(redirectUrl);
    }
    

    En este código, primero realizas la solicitud HTTP a la API de la pasarela de pago como antes. Luego, para realizar la redirección HTTP, simplemente construyes la URL a la que se debe redirigir el cliente y llamas al método Redirect de la clase Controller, pasando la URL como argumento.

    Ten en cuenta que en el ejemplo de código, la URL de redirección es `https://abc.gateway.mastercard.com/paymentflow/start/?OrderId=1&TransactionId=1`. En la práctica, deberás reemplazar esto por la URL correcta de tu pasarela de pago y proporcionar los parámetros de consulta necesarios.

Comments are closed.