asp.networldpay

worldpay integration asp.net


Hi I am trying to integrate worldpay on my asp.net website. I have used this code to achieve the integration.

//test environment url
string url = "https://secure-test.worldpay.com/wcc/purchase";

//get all form elements
NameValueCollection formData = new NameValueCollection();
formData["testMode"] = "100";

//all the form fields here

//make the call to submit form data
WebClient webClient = new WebClient();
byte[] responseBytes = webClient.UploadValues(url, "POST", formData);
string response = Encoding.UTF8.GetString(responseBytes);            
inputdiv.Visible = false;
outputdiv.Visible = true;
outputdiv.InnerHtml = response;    

Basically I am getting the response and displaying it on a div. Everything works, but the links are having relative path which shouldn't be the case. Except the image urls, all other urls should point to worldpay. how to achieve this? Any suggestion will be much appreciated.


Solution

  • Please try this, hope this would help a lot.

    Html

    <form action="/complete" id="paymentForm" method="post">
    
        <span id="paymentErrors"></span>
    
        <div class="form-row">
            <label>Name on Card</label>
            <input data-worldpay="name" name="name" type="text" />
        </div>
        <div class="form-row">
            <label>Card Number</label>
            <input data-worldpay="number" size="20" type="text" />
        </div>
        <div class="form-row">
            <label>CVC</label>
            <input data-worldpay="cvc" size="4" type="text" />
        </div>
        <div class="form-row">
            <label>Expiration (MM/YYYY)</label>
            <input data-worldpay="exp-month" size="2" type="text" />
            <label> / </label>
            <input data-worldpay="exp-year" size="4" type="text" />
        </div>
    
        <input type="submit" value="Place Order" />
    
    </form>
    

    SCRIPT

    <script src="https://cdn.worldpay.com/v1/worldpay.js"></script>
        <script type="text/javascript">
            var form = document.getElementById('paymentForm');
    
            Worldpay.useOwnForm({
                'clientKey': 'Your_Client_Key',
                'form': form,
                'reusable': false,
                'callback': function (status, response) {
                    document.getElementById('paymentErrors').innerHTML = '';
                    if (response.error) {
                        Worldpay.handleError(form, document.getElementById('paymentErrors'), response.error);
                    } else {
                        var token = response.token;
                        Worldpay.formBuilder(form, 'input', 'hidden', 'token', token);
                        console.log(token);
    
                        $.ajax({
                            url: "/Home/payment/",
                            data: { token: token },
                            success: function (data) {
    
                            },
                            dataType: "html",
                            type: "POST",
                            cache: false,
                            error: function () {
                                //Error Message
                            }
                        });
    
                        form.submit();
                    }
                }
            });
    </script>
    

    Serve Side Code C#

    public ActionResult payment(string token)
    {
        var restClient = new WorldpayRestClient("https://api.worldpay.com/v1", "Your_Service_Key");
    
        var orderRequest = new OrderRequest()
        {
            token = token,
            amount = 500,
            currencyCode = CurrencyCode.GBP.ToString(),
            name = "test name",
            orderDescription = "Order description",
            customerOrderCode = "Order code"
    
        };
    
        var address = new Address()
        {
            address1 = "123 House Road",
            address2 = "A village",
            city = "London",
            countryCode = CountryCode.GB,
            postalCode = "EC1 1AA"
        };
    
        orderRequest.billingAddress = address;
    
        try
        {
            OrderResponse orderResponse = restClient.GetOrderService().Create(orderRequest);
            Console.WriteLine("Order code: " + orderResponse.orderCode);
        }
        catch (WorldpayException e)
        {
            Console.WriteLine("Error code:" + e.apiError.customCode);
            Console.WriteLine("Error description: " + e.apiError.description);
            Console.WriteLine("Error message: " + e.apiError.message);
        }
        return Json(null, JsonRequestBehavior.AllowGet);
    }