Передача информации в Глобальную платежную ГЭС - PullRequest
0 голосов
/ 21 апреля 2020

Я делаю звонок через почтовый запрос в коде в Global Payments, но я не знаю, получает ли он информацию или нет.

Кажется, что игнорируется мой параметр конфигурации и мои URL-адреса возврата так что удивляйтесь, получает ли он какие-либо данные, хотя он и выдает ошибку, если order_id, amount и т. д. c неверны Я также не получаю запись транзакции на портале отчетов.

Так что я звоню с AWS Lambda как:

        Payment pay = new Payment();

        string URL = "https://pay.sandbox.realexpayments.com/pay";

        // Create a payment object with built in validation, etc
        pay.ORDER_ID = [ORDERID];
        pay.MERCHANT_ID = [COMPANYNAME];
        pay.ACCOUNT = [ACCOUNT];
        pay.TIMESTAMP = DateTime.Now.Year.ToString() +
                        DateTime.Now.Month.ToString().PadLeft(2, pad) +
                        DateTime.Now.Day.ToString().PadLeft(2,pad) +
                        DateTime.Now.Hour.ToString().PadLeft(2, pad) +
                        DateTime.Now.Minute.ToString().PadLeft(2, pad) +
                        DateTime.Now.Second.ToString().PadLeft(2, pad);

        pay.CURRENCY = [CURRENCY];
        pay.AMOUNT = [PRICE];
        **pay.PM_METHODS = "cards|paypal";**
        **pay.MERCHANT_RESPONSE_URL = [VALID API GATEWAY MOCK ENDPOINT];**
        pay.HPP_TX_STATUS_URL = ...
        pay.VARREF = ...
        pay.COMMENT1 = ...
        pay.AUTO_SETTLE_FLAG = 1;
        pay.SHIPPING_ADDRESS_ENABLE = 1;
        pay.ADDRESS_OVERRIDE = 1;
        pay.HPP_NAME = ...;
        pay.HPP_STREET = ...;
        pay.HPP_STREET2 = ...;
        pay.HPP_CITY = ...;
        pay.HPP_STATE = ...;
        pay.HPP_ZIP = ...;
        pay.HPP_COUNTRY = ...;
        pay.HPP_PHONE = ...;                                       

        // Get the hash key
        string tempToHash = HashIt(pay.TIMESTAMP + "." + pay.MERCHANT_ID + "." + pay.ORDER_ID + "." + pay.AMOUNT + "." + pay.CURRENCY);
        string finalHash = HashIt(tempToHash + ".[hash key]");

        pay.SHA1HASH = finalHash;
        var httpWebRequest = (System.Net.HttpWebRequest)WebRequest.Create(URL);

        var postData = "TIMESTAMP=" + pay.TIMESTAMP +
           "&MERCHANT_ID=" + pay.MERCHANT_ID +
           "&ACCOUNT=" + pay.ACCOUNT +
           "&ORDER_ID=" + pay.ORDER_ID +
           "&AMOUNT=" + pay.AMOUNT +
           "&CURRENCY=" + pay.CURRENCY +
           "&MERCHANT_RESPONSE_URL=" + pay.MERCHANT_RESPONSE_URL +
           "&HPP_TX_STATUS_URL=" + pay.HPP_TX_STATUS_URL +
           "&PM_METHODS=" + pay.PM_METHODS + 
           "&SHA1HASH=" + finalHash +
           "&HPP_VERSION=2" + 
           "&VARREF=" + pay.VARREF +
           "&COMMENT1=" + pay.COMMENT1 +
           "&AUTO_SETTLE_FLAG=" + pay.AUTO_SETTLE_FLAG +
           "&SHIPPING_ADDRESS_ENABLE=" + pay.SHIPPING_ADDRESS_ENABLE +
           "&ADDRESS_OVERRIDE=" + pay.ADDRESS_OVERRIDE +
           "&HPP_NAME=" + pay.HPP_NAME +
           "&HPP_STREET=" + pay.HPP_STREET +
           "&HPP_STREET2=" + pay.HPP_STREET2 +
           "&HPP_CITY=" + pay.HPP_CITY +
           "&HPP_STATE=" + pay.HPP_STATE +
           "&HPP_ZIP=" + pay.HPP_ZIP +
           "&HPP_COUNTRY=" + pay.HPP_COUNTRY +
           "&HPP_PHONE=" + pay.HPP_PHONE;

        var data = Encoding.ASCII.GetBytes(postData);
        var data2 = Encoding.ASCII.GetChars(data);

        httpWebRequest.Method = "POST";
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.ContentLength = data.Length;

        Console.WriteLine(postData);


        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {

            streamWriter.Write(data2, 0, data2.Length);
        }

        Console.WriteLine("Calling");

        try
        {
            var httpResponse = (System.Net.HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                result = streamReader.ReadToEnd();
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);

        }

        Console.WriteLine(result);

Я знаю, что код не совсем элегантный ( !) но, похоже, это делает пост. Он перенаправляет на страницу оплаты и, кажется, принимает платеж, но не настраивает страницу правильно, так как на ней отображаются только платежи по карте - нет PayPal и не используется мой обратный URL.

Я что-то пропустил?

Приветствия,

...