public static PaymentVerifyResult CreateVerifyResult( string webServiceResponse, InvoiceContext context, IranKishCallbackResult callbackResult, MessagesOptions messagesOptions) { var result = XmlHelper.GetNodeValueFromXml(webServiceResponse, "KicccPaymentsVerificationResult"); // The result object is actually the amount of invoice . It must equal to invoice's amount. if (!long.TryParse(result, out var numericResult)) { return(new PaymentVerifyResult { TrackingNumber = callbackResult.InvoiceNumber, TransactionCode = callbackResult.ReferenceId, IsSucceed = false, Message = messagesOptions.InvalidDataReceivedFromGateway }); } var isSuccess = numericResult != (long)context.Payment.Amount; var translatedMessage = isSuccess ? messagesOptions.PaymentSucceed : IranKishGatewayResultTranslator.Translate(result, messagesOptions); return(new PaymentVerifyResult { TrackingNumber = callbackResult.InvoiceNumber, TransactionCode = callbackResult.ReferenceId, IsSucceed = true, Message = translatedMessage }); }
public static IranKishCallbackResult CreateCallbackResult( InvoiceContext context, IranKishGatewayAccount account, HttpRequest httpRequest, MessagesOptions messagesOptions) { httpRequest.TryGetParam("ResultCode", out var resultCode); httpRequest.Form.TryGetValue("Token", out var token); httpRequest.TryGetParam("MerchantId", out var merchantId); // Equals to TrackingNumber in Parbad system. httpRequest.TryGetParamAs <long>("InvoiceNumber", out var invoiceNumber); // Equals to TransactionCode in Parbad system. httpRequest.TryGetParam("ReferenceId", out var referenceId); var isSucceed = false; PaymentVerifyResult verifyResult = null; if (merchantId != account.MerchantId || invoiceNumber != context.Payment.TrackingNumber || token.IsNullOrEmpty()) { verifyResult = new PaymentVerifyResult { TrackingNumber = invoiceNumber, TransactionCode = referenceId, IsSucceed = false, Message = messagesOptions.InvalidDataReceivedFromGateway }; } else { var translatedMessage = IranKishGatewayResultTranslator.Translate(resultCode, messagesOptions); isSucceed = resultCode == OkResult; if (!isSucceed) { verifyResult = new PaymentVerifyResult { TrackingNumber = invoiceNumber, TransactionCode = referenceId, IsSucceed = false, Message = translatedMessage }; } } return(new IranKishCallbackResult { IsSucceed = isSucceed, Token = token, InvoiceNumber = invoiceNumber, ReferenceId = referenceId, Result = verifyResult }); }