public void MGClientConstructorShouldFail() { // Arrange MGClient client = new MGClient(useConstantUrl: false); MGDepositRequest request = new MGDepositRequest(); string expectedErrorMessage = "MGClient missing parameters: endpoint merchantSecret requestUrl merchantId"; // Act MGDepositResult actual = client.InitDeposit(request).Result; // Assert Assert.IsFalse(actual.IsSuccess); Assert.AreEqual(expectedErrorMessage, actual.Message); }
/// <summary> /// Make a deposit request /// </summary> /// <param name="requestPayload">Deposit request payload</param> /// <returns>Task<MGDepositResult> containing Zotapay API response</returns> public async Task <MGDepositResult> InitDeposit(MGDepositRequest requestPayload) { if (requestPayload.GetType() != typeof(MGDepositRequest)) { return(new MGDepositResult { IsSuccess = false, Message = "Got MGDepositCardRequest instead of MGDepositRequest. Please use MGClient.InitCardDeposit for credit card integrations." }); } var result = await Send(requestPayload); return((MGDepositResult)result); }
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); }
public void EmptyRequestShowsFullErrorMessage() { // Arrange MGClient clientMock = Mocks.GetMockedMGClient(null); MGDepositRequest depositRequest = new MGDepositRequest(); string expectedErrorMessage = "The MerchantOrderID field is required. | The MerchantOrderDesc field is required. |" + " The OrderAmount field is required. | The OrderCurrency field is required. | The CustomerFirstName field is required. |" + " The CustomerLastName field is required. | The CustomerAddress field is required. | The CustomerCountryCode field is required. |" + " The CustomerCity field is required. | The CustomerZipCode field is required. | The CustomerPhone field is required. |" + " The CustomerIP field is required. | The RedirectUrl field is required. | The CheckoutUrl field is required."; // Act MGDepositResult actualDepositResult = clientMock.InitDeposit(depositRequest).Result; // Assert Assert.IsFalse(actualDepositResult.IsSuccess); Assert.AreEqual(expectedErrorMessage, actualDepositResult.Message); }
public void TestDepositSignature() { // Arrange MGDepositRequest request = new MGDepositRequest() { MerchantOrderID = "12345", OrderAmount = "100.00", CustomerEmail = "*****@*****.**", }; string endpointId = "400009"; string secret = "merchant-secret-@#$!"; string expectedSignature = "e53b3ca225d4c1d6228c46159081295bda7cab19ca17369b469079a22e5629cb"; // Act request.GenerateSignature(endpointId, secret); // Assert Assert.AreEqual(expectedSignature, request.Signature); }
public static void DepositExample(MGClient client) { // Assemble deposit order data MGDepositRequest DepositOrderRequest = new MGDepositRequest { MerchantOrderID = "QvE8dZshpKhaOmHY1", 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", CallbackUrl = "https://example-merchant.com/payment/callback", }; // Initiate deposit order request MGDepositResult resp = client.InitDeposit(DepositOrderRequest).Result; // Check the request status if (!resp.IsSuccess) { // handle unsuccessful request string reasonForFailure = resp.Message; // ... return; } // Redirect the end user to the payment url string paymentUrl = resp.Data.DepositUrl; Console.WriteLine(paymentUrl); }