/// <inheritdoc /> public override async Task <IPaymentRequestResult> RequestAsync(Invoice invoice, CancellationToken cancellationToken = default) { if (invoice == null) { throw new ArgumentNullException(nameof(invoice)); } var account = await GetAccountAsync(invoice).ConfigureAwaitFalse(); var data = MellatHelper.CreateRequestData(invoice, account); var responseMessage = await _httpClient .PostXmlAsync(MellatHelper.GetWebServiceUrl(account.IsTestTerminal), data, cancellationToken) .ConfigureAwaitFalse(); var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); return(MellatHelper.CreateRequestResult(response, _httpContextAccessor, _messagesOptions.Value, account)); }
/// <inheritdoc /> public override async Task <IPaymentVerifyResult> VerifyAsync(InvoiceContext context, CancellationToken cancellationToken = default) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var callbackResult = MellatHelper.CrateCallbackResult(_httpContextAccessor.HttpContext.Request, _messagesOptions.Value); if (!callbackResult.IsSucceed) { return(callbackResult.Result); } var account = await GetAccountAsync(context.Payment).ConfigureAwaitFalse(); var data = MellatHelper.CreateVerifyData(context, account, callbackResult); var responseMessage = await _httpClient .PostXmlAsync(MellatHelper.GetWebServiceUrl(account.IsTestTerminal), data, cancellationToken) .ConfigureAwaitFalse(); var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); var verifyResult = MellatHelper.CheckVerifyResult(response, callbackResult, _messagesOptions.Value); if (!verifyResult.IsSucceed) { return(verifyResult.Result); } data = MellatHelper.CreateSettleData(context, callbackResult, account); responseMessage = await _httpClient .PostXmlAsync(MellatHelper.GetWebServiceUrl(account.IsTestTerminal), data, cancellationToken) .ConfigureAwaitFalse(); response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); return(MellatHelper.CreateSettleResult(response, callbackResult, _messagesOptions.Value)); }
/// <inheritdoc /> public override async Task <IPaymentRefundResult> RefundAsync(VerifyContext context, Money amount, CancellationToken cancellationToken = default) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (amount == null) { throw new ArgumentNullException(nameof(amount)); } var account = await GetAccountAsync(context.Payment).ConfigureAwaitFalse(); var data = MellatHelper.CreateRefundData(context, account); var responseMessage = await _httpClient .PostXmlAsync(MellatHelper.GetWebServiceUrl(account.IsTestTerminal, context.Payment.Amount), data, cancellationToken) .ConfigureAwaitFalse(); var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); return(MellatHelper.CreateRefundResult(response, _messagesOptions.Value)); }