public async Task <ActionResult> Payment(PaymentInput input) { var paymentViewModel = new PaymentViewModel() { PaymentInput = input, }; if (!ModelState.IsValid) { return(View("Index", paymentViewModel)); } var gateCheckRequest = new GateCheckRequest() { Number = input.Number, Amount = double.Parse(input.Amount, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture), }; try { paymentViewModel.GatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false); } catch (Exception e) { m_Logger.Error(e.Message, e); paymentViewModel.ExceptionMessage = e.Message; } return(View("Index", paymentViewModel)); }
public async Task <GateCheckResponse> Check(GateCheckRequest gateCheckRequest) { var clientCheckRequest = prepareCheckRequest(gateCheckRequest); var clientCheckResponse = await m_Client.Send(clientCheckRequest).ConfigureAwait(false); return(new GateCheckResponse() { DisplayInfo = clientCheckResponse.ADDINFO, Error = getCheckPayError(clientCheckResponse), Session = clientCheckRequest.SESSION, }); }
public async Task <GatePayResponse> CheckAndPay(GateCheckRequest gateCheckRequest) { var clientCheckRequest = prepareCheckRequest(gateCheckRequest); var clientCheckResponse = await m_Client.Send(clientCheckRequest).ConfigureAwait(false); var error = getCheckPayError(clientCheckResponse); if (error != null) { return new GatePayResponse() { Error = error, IsCheckFailed = true, Session = clientCheckRequest.SESSION, RRN = null, TransId = null, } } ; var clientPayRequest = new PayRequest() { SD = clientCheckRequest.SD, AP = clientCheckRequest.AP, OP = clientCheckRequest.OP, DATE = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"), SESSION = clientCheckRequest.SESSION, NUMBER = clientCheckRequest.NUMBER, ACCOUNT = clientCheckRequest.ACCOUNT, AMOUNT = clientCheckRequest.AMOUNT, AMOUNT_ALL = clientCheckRequest.AMOUNT_ALL, PAY_TOOL = clientCheckRequest.PAY_TOOL, TERM_ID = clientCheckRequest.TERM_ID, COMMENT = "", RRN = RandomStringGenerator.GenerateNumericString(32, m_Rng), ACCEPT_KEYS = null, // will be filled right before sending NO_ROUTE = clientCheckRequest.NO_ROUTE, }; var clientPayResponse = await m_Client.Send(clientPayRequest).ConfigureAwait(false); return(new GatePayResponse() { Error = getCheckPayError(clientPayResponse), IsCheckFailed = false, Session = clientCheckRequest.SESSION, RRN = clientPayRequest.RRN, TransId = clientPayResponse.TRANSID, }); }
public async Task CheckPayTest(double?amount, bool shouldSucceed, string reason) { var gateCheckRequest = new GateCheckRequest() { Number = "9261112233", Amount = amount, }; var gatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false); if (shouldSucceed) { gatePayResponse.Error.Should().BeNull(reason); } else { gatePayResponse.Error.Should().NotBeNull(reason); } }
public async Task CheckPayStatusTest() { var gateCheckRequest = new GateCheckRequest() { Number = "9261112233", Amount = 1234.5678, }; var gatePayResponse = await m_Gate.CheckAndPay(gateCheckRequest).ConfigureAwait(false); var gateStatusRequest = new GateStatusRequest() { Session = gatePayResponse.Session, TransId = gatePayResponse.TransId, }; var gateStatusResponse = await m_Gate.Status(gateStatusRequest).ConfigureAwait(false); gateStatusResponse.Error.Should().BeNull(); gateStatusResponse.Status.Code.Should().Be(7); }
private CheckRequest prepareCheckRequest(GateCheckRequest request) { return(new CheckRequest() { SD = m_Configuration.SD, AP = m_Configuration.AP, OP = m_Configuration.OP, DATE = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"), SESSION = RandomStringGenerator.GenerateAlphaNumericString(20, m_Rng), NUMBER = request.Number, ACCOUNT = request.Number != null ? string.Empty : request.Account, AMOUNT = request.Amount.HasValue ? printDouble(request.Amount.Value) : printDouble(FAKE_AMOUNT), AMOUNT_ALL = request.Amount.HasValue ? printDouble(request.Amount.Value) : printDouble(FAKE_AMOUNT), REQ_TYPE = request.Amount == null ? "1" : "0", PAY_TOOL = ((int)m_Configuration.PAY_TOOL).ToString(), TERM_ID = m_Configuration.TERM_ID, COMMENT = "", ACCEPT_KEYS = null, // will be filled right before sending NO_ROUTE = m_Configuration.NO_ROUTE ? "1" : "0", }); }