public static async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, HttpContext httpContext, ZibalGatewayAccount account, ZibalGatewayOptions gatewayOptions, MessagesOptions messagesOptions) { var message = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <ZibalResponseModel>(message); if (response == null) { return(PaymentRequestResult.Failed(messagesOptions.InvalidDataReceivedFromGateway, account.Name)); } if (response.Result != SuccessCode) { var failureMessage = ZibalTranslator.TranslateResult(response.Result) ?? response.Message ?? messagesOptions.PaymentFailed; return(PaymentRequestResult.Failed(failureMessage, account.Name, response.Result.ToString())); } var paymentPageUrl = string.IsNullOrEmpty(response.PayLink) ? GetPaymentPageUrl(gatewayOptions.PaymentPageUrl, response.TrackId) : response.PayLink; var result = PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl); result.DatabaseAdditionalData.Add(TrackIdAdditionalDataKey, response.TrackId.ToString()); return(result); }
public static ZibalPaymentVerifyModel CreateVerifyData( IEnumerable <Transaction> transactions, ZibalGatewayAccount account) { var trackId = GetTrackId(transactions); return(new ZibalPaymentVerifyModel { Merchant = account.Merchant, TrackId = trackId }); }
public static object CreateRequestData(Invoice invoice, ZibalGatewayAccount account) { var requestAdditionalData = invoice.GetZibalRequestData(); return(new ZibalPaymentRequestModel { //if Merchant value is 'zibal' , Gateway mode is sandBox Merchant = account.IsSandbox ? "zibal" : account.Merchant, Amount = invoice.Amount, Mobile = requestAdditionalData?.MobileNumber, OrderId = invoice.TrackingNumber.ToString(), CallbackUrl = invoice.CallbackUrl, Description = requestAdditionalData?.Description, FeeMode = requestAdditionalData?.FeeMode, Sms = requestAdditionalData?.SendPaymentLinkViaSms, AllowedCards = requestAdditionalData?.AllowedCards }); }
public static ZibalRequestModel CreateRequestData(Invoice invoice, ZibalGatewayAccount account) { var request = invoice.GetZibalRequest(); if (request == null) { throw new Exception("ZibalRequest object not found. Make sure that you are using the UseZibal method."); } return(new ZibalRequestModel() { //if Merchant value is 'zibal' , Gateway mode is sandBox Merchant = account.IsSandBox ? "zibal" : account.Merchant, Amount = invoice.Amount, CustomerMobile = request.CustomerMobile, OrderId = invoice.TrackingNumber.ToString(), CallBackUrl = invoice.CallbackUrl, Description = request.Description, FeeMode = request.FeeMode, SendSms = request.SendSms, AllowedCards = request.AllowedCards }); }
public static ZibalVerifyRequestModel CreateVerifyData( IEnumerable <Transaction> transactions, ZibalGatewayAccount account) { var transactionRecord = transactions.SingleOrDefault(transaction => transaction.Type == TransactionType.Request); if (transactionRecord == null) { throw new Exception("Cannot find any transaction with the type \"Request\""); } var additionalData = JsonConvert.DeserializeObject <IDictionary <string, string> >(transactionRecord.AdditionalData); if (!additionalData.ContainsKey(TrackIdAdditionalDataKey)) { throw new Exception("Cannot find the TrackId."); } return(new ZibalVerifyRequestModel { Merchant = account.Merchant, TrackId = additionalData[TrackIdAdditionalDataKey] }); }