public static object CreateRequestData(Invoice invoice, MelliGatewayAccount account) { var signedData = SignRequestData(account.TerminalId, account.TerminalKey, invoice.TrackingNumber, invoice.Amount); return(CreateRequestObject( account.TerminalId, account.MerchantId, invoice.Amount, signedData, invoice.CallbackUrl, invoice.TrackingNumber)); }
public static object CreateRequestData(Invoice invoice, MelliGatewayAccount account, IMelliGatewayCrypto crypto) { var data = $"{account.TerminalId};{invoice.TrackingNumber};{(long)invoice.Amount}"; var signedData = crypto.Encrypt(account.TerminalKey, data); return(CreateRequestObject( account.TerminalId, account.MerchantId, invoice.Amount, signedData, invoice.CallbackUrl, invoice.TrackingNumber)); }
public static async Task <MelliCallbackResult> CreateCallbackResultAsync( InvoiceContext context, HttpRequest httpRequest, MelliGatewayAccount account, IMelliGatewayCrypto crypto, MessagesOptions messagesOptions, CancellationToken cancellationToken) { var apiResponseCode = await httpRequest.TryGetParamAsAsync <int>("ResCode", cancellationToken).ConfigureAwaitFalse(); if (!apiResponseCode.Exists || apiResponseCode.Value != SuccessCode) { return(new MelliCallbackResult { IsSucceed = false, Result = PaymentVerifyResult.Failed(messagesOptions.PaymentFailed) }); } var apiToken = await httpRequest.TryGetParamAsync("Token", cancellationToken).ConfigureAwaitFalse(); var apiOrderId = await httpRequest.TryGetParamAsAsync <long>("OrderId", cancellationToken).ConfigureAwaitFalse(); if (!apiOrderId.Exists || apiOrderId.Value != context.Payment.TrackingNumber) { return(new MelliCallbackResult { IsSucceed = false, Token = apiToken.Value, Result = PaymentVerifyResult.Failed(messagesOptions.InvalidDataReceivedFromGateway) }); } var signedData = crypto.Encrypt(account.TerminalKey, apiToken.Value); var dataToVerify = CreateVerifyObject(apiToken.Value, signedData); return(new MelliCallbackResult { IsSucceed = true, Token = apiToken.Value, JsonDataToVerify = dataToVerify }); }
public static PaymentRequestResult CreateRequestResult( MelliApiRequestResult result, HttpContext httpContext, MelliGatewayAccount account, MelliGatewayOptions gatewayOptions, MessagesOptions messagesOptions) { if (result == null) { return(PaymentRequestResult.Failed(messagesOptions.UnexpectedErrorText)); } var isSucceed = result.ResCode == SuccessCode; if (!isSucceed) { string message; if (result.ResCode == DuplicateTrackingNumberCode) { message = messagesOptions.DuplicateTrackingNumber; } else { message = !result.Description.IsNullOrEmpty() ? result.Description : MelliRequestResultTranslator.Translate(result.ResCode, messagesOptions); } return(PaymentRequestResult.Failed(message, account.Name)); } var paymentPageUrl = $"{gatewayOptions.PaymentPageUrl}/Index?token={result.Token}"; return(PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl)); }
public static MelliCallbackResult CreateCallbackResult(InvoiceContext context, HttpRequest httpRequest, MelliGatewayAccount account, MessagesOptions messagesOptions) { httpRequest.TryGetParamAs <int>("ResCode", out var apiResponseCode); if (apiResponseCode != SuccessCode) { return(new MelliCallbackResult { IsSucceed = false, Result = PaymentVerifyResult.Failed(messagesOptions.PaymentFailed) }); } httpRequest.TryGetParam("Token", out var apiToken); httpRequest.TryGetParamAs <long>("OrderId", out var apiOrderId); if (apiOrderId != context.Payment.TrackingNumber) { return(new MelliCallbackResult { IsSucceed = false, Token = apiToken, Result = PaymentVerifyResult.Failed(messagesOptions.InvalidDataReceivedFromGateway) }); } var signedData = SignVerifyData(account.TerminalKey, apiToken); var dataToVerify = CreateVerifyObject(apiToken, signedData); return(new MelliCallbackResult { IsSucceed = true, Token = apiToken, JsonDataToVerify = dataToVerify }); }