예제 #1
0
        public void PayoutOrderSuccess()
        {
            // Arrange
            MGPayoutResult expectedResult = new MGPayoutResult()
            {
                IsSuccess = true,
                Code      = "200",
                Message   = null,
                Data      = new MGPayoutData {
                    orderID = "123456", merchantOrderID = "merch-order"
                }
            };
            string   messageSuccess = "{ \"code\": \"200\", \"data\": { \"orderID\": \"123456\", \"merchantOrderID\": \"merch-order\"} }";
            var      httpMock       = Mocks.GetMockedHttp(HttpStatusCode.OK, messageSuccess);
            MGClient client         = Mocks.GetMockedMGClient(httpClient: httpMock);
            var      payoutRequest  = new MGPayoutRequest
            {
                MerchantOrderID           = "Q44mHY18",
                CustomerBankCode          = "BBL",
                OrderAmount               = "100.00",
                CustomerBankAccountNumber = "1234567",
                CustomerBankAccountName   = "Don Jhoe",
                CustomerEmail             = "*****@*****.**",
                CustomerBankBranch        = "bankBranch",
                CustomerBankProvince      = "province",
                CustomerBankArea          = "bankArea",
                CustomerBankRoutingNumber = "000",
                OrderCurrency             = "USD",
                MerchantOrderDesc         = "desc",
                CustomerFirstName         = "John",
                CustomerLastName          = "Doe",
                CustomerBankAddress       = "The Moon, hill 42",
                CustomerBankZipCode       = "1303",
                CustomerPhone             = "123",
                CustomerIP  = "127.0.0.1",
                RedirectUrl = "https://example-merchant.com/payment/return",
                CheckoutUrl = "https://example-merchant.com/deposit",
                CallbackUrl = "https://example-merchant.com/callback",
            };

            // Act
            MGPayoutResult actual = client.InitPayout(payoutRequest).Result;

            // Assert
            Assert.IsTrue(actual.IsSuccess);
            Assert.AreEqual(expectedResult.Code, actual.Code);
            Assert.AreEqual(expectedResult.Message, actual.Message);
            Assert.AreEqual(expectedResult.Data.orderID, actual.Data.orderID);
            Assert.AreEqual(expectedResult.Data.merchantOrderID, actual.Data.merchantOrderID);
        }
예제 #2
0
        public void DepositSuccess()
        {
            // Arrange
            MGDepositResult expectedResult = new MGDepositResult()
            {
                IsSuccess = true,
                Code      = "200",
                Message   = null,
                Data      = new DepositResponseData()
                {
                    DepositUrl      = "https://api.zotapay.com/api/v1/deposit/init/8b3a6b89697e8ac8f45d964bcc90c7ba41764acd/",
                    MerchantOrderID = "QvE8dZshpKhaOmHY",
                    OrderID         = "8b3a6b89697e8ac8f45d964bcc90c7ba41764acd",
                }
            };
            string   messageSuccess = "{ \"code\": \"200\", \"data\": { \"depositUrl\": \"https://api.zotapay.com/api/v1/deposit/init/8b3a6b89697e8ac8f45d964bcc90c7ba41764acd/\", \"merchantOrderID\": \"QvE8dZshpKhaOmHY\", \"orderID\": \"8b3a6b89697e8ac8f45d964bcc90c7ba41764acd\" } }";
            var      httpMock       = Mocks.GetMockedHttp(HttpStatusCode.OK, messageSuccess);
            MGClient client         = Mocks.GetMockedMGClient(httpClient: httpMock);
            var      DepositRequest = new MGDepositRequest
            {
                MerchantOrderID     = "QvE8dZshpKhaOmHY",
                OrderAmount         = "100.00",
                CustomerEmail       = "*****@*****.**",
                OrderCurrency       = "USD",
                MerchantOrderDesc   = "desc",
                CustomerFirstName   = "John",
                CustomerLastName    = "Doe",
                CustomerAddress     = "The Moon, hill 42",
                CustomerCity        = "Sofia",
                CustomerCountryCode = "BG",
                CustomerZipCode     = "1303",
                CustomerPhone       = "123",
                CustomerIP          = "127.0.0.1",
                RedirectUrl         = "https://example-merchant.com/payment/return",
                CheckoutUrl         = "https://example-merchant.com/deposit"
            };

            // Act
            MGDepositResult actual = client.InitDeposit(DepositRequest).Result;

            // Assert
            Assert.IsTrue(actual.IsSuccess);
            Assert.AreEqual(expectedResult.Data.DepositUrl, actual.Data.DepositUrl);
            Assert.AreEqual(expectedResult.Data.MerchantOrderID, actual.Data.MerchantOrderID);
            Assert.AreEqual(expectedResult.Data.OrderID, actual.Data.OrderID);
            Assert.AreEqual(expectedResult.Code, actual.Code);
            Assert.AreEqual(expectedResult.Message, actual.Message);
        }
예제 #3
0
        public void DepositCatchesUnexpectedResponse()
        {
            // Arrange
            string   responseMessage      = "!@#$%^&*() -- not a valid json message, that will cause an exception -- !@#$%^&*()";
            var      httpMock             = Mocks.GetMockedHttp(HttpStatusCode.InternalServerError, responseMessage);
            MGClient client               = Mocks.GetMockedMGClient(httpClient: httpMock);
            var      DepositRequest       = Mocks.GetFullDepositRequest();
            string   expectedErrorMessage = "Unexpected character encountered while parsing value: !. Path '', line 0, position 0.: \n" +
                                            "Raw Response: !@#$%^&*() -- not a valid json message, that will cause an exception -- !@#$%^&*()";

            // Act
            MGDepositResult actual = client.InitDeposit(DepositRequest).Result;

            // Assert
            Assert.IsFalse(actual.IsSuccess);
            Assert.AreEqual(expectedErrorMessage, actual.Message);
        }
예제 #4
0
        public void QueryRequestSuccess()
        {
            // Arrange
            var queryRequest = new MGQueryTxnRequest
            {
                OrderID         = "1234567",
                MerchantOrderID = "merch-order-id",
            };
            string messageSuccess = "{\"code\":\"200\",\"data\":{\"type\":\"SALE\",\"status\":\"APPROVED\",\"errorMessage\":\"\",\"endpointID\":\"1050\",\"processorTransactionID\":\"\",\"orderID\":\"8b3a6b89697e8ac8f45d964bcc90c7ba41764acd\",\"merchantOrderID\":\"QvE8dZshpKhaOmHY\",\"amount\":\"500.00\",\"currency\":\"THB\",\"customerEmail\":\"[email protected]\",\"customParam\":\"{\\\"UserId\\\":\\\"e139b447\\\"}\",\"extraData\":\"\",\"request\":{\"merchantID\":\"EXAMPLE-MERCHANT-ID\",\"orderID\":\"8b3a6b89697e8ac8f45d964bcc90c7ba41764acd\",\"merchantOrderID\":\"QvE8dZshpKhaOmHY\",\"timestamp\":\"1564617600\"}}}";
            var    httpMock       = Mocks.GetMockedHttp(HttpStatusCode.OK, messageSuccess);
            var    client         = Mocks.GetMockedMGClient(httpClient: httpMock);

            // Act
            var actual = client.CheckOrderStatus(queryRequest).Result;

            // Assert
            Assert.IsTrue(actual.IsSuccess);
            Assert.AreEqual("APPROVED", actual.Data.status);
        }
예제 #5
0
        public void DepositUnsuccessful()
        {
            // Arrange
            MGDepositResult expectedResult = new MGDepositResult()
            {
                IsSuccess = false,
                Code      = "400",
                Message   = "endpoint currency mismatch",
                Data      = null,
            };
            string   responseMessage = "{ \"code\": \"400\", \"message\": \"endpoint currency mismatch\" } ";
            var      httpMock        = Mocks.GetMockedHttp(HttpStatusCode.BadRequest, responseMessage);
            MGClient client          = Mocks.GetMockedMGClient(httpClient: httpMock);
            var      DepositRequest  = Mocks.GetFullDepositRequest();

            // Act
            MGDepositResult actual = client.InitDeposit(DepositRequest).Result;

            // Assert
            Assert.IsFalse(actual.IsSuccess);
            Assert.AreEqual(expectedResult.Data, actual.Data);
            Assert.AreEqual(expectedResult.Code, actual.Code);
            Assert.AreEqual(expectedResult.Message, actual.Message);
        }