public WalletaTokenResponseModel GetToken(WalletaTokenRequestModel tokenRequest) { const string methodName = "payment/request.json"; string serviceAddress = GetServiceAddress(methodName); var httpClient = new HttpClient(); string jsonBody = JavaScriptSerializer.Serialize(tokenRequest); var jsonContent = new StringContent(jsonBody, Encoding.UTF8, "application/json"); Logger.Info($"Trace: {LogTraceID.ToString()} | Sending request to {serviceAddress} | Data: {jsonBody}"); var httpResponse = httpClient.PostAsync(serviceAddress, jsonContent).Result; string jsonResponse = ReadJsonBody(httpResponse); Logger.Info($"Trace: {LogTraceID.ToString()} | Received response from {serviceAddress} | Data: {jsonResponse}"); var walletaTokenModel = JavaScriptSerializer.Deserialize <WalletaTokenResponseModel>(jsonResponse); return(walletaTokenModel); }
public ActionResult Index(SimplePayModel model) { if (!ModelState.IsValid) { return(View(model)); } string invoiceReference = DateTime.Now.Ticks.ToString(); var tokenRequest = new WalletaTokenRequestModel ( MerchantCode, invoiceReference, DateTime.Now, model.Amount, "نام", "نام خانوادگی", model.NationalCode, model.Mobile, CallBack ); tokenRequest.items = new Item[] { new Item { reference = "PK-0001", name = "کالای تست ۱", quantity = 2, unit_price = model.Amount / 2, unit_discount = 0, unit_tax_amount = 0, total_amount = model.Amount, }, new Item { name = "هزینه ارسال", quantity = 1, unit_price = 10000, unit_discount = 0, unit_tax_amount = 0, total_amount = 10000, } }; var result = WalletaPaymentService.GetToken(tokenRequest); if (result == null) { ModelState.AddModelError("خطای سرویس", "پاسخی از سمت سرویس دریافت نشد"); return(View(model)); } if (result.invalid_fields != null && result.invalid_fields.Length > 0) { foreach (var field in result.invalid_fields) { ModelState.AddModelError(field.field, field.field + ": " + field.message); } return(View(model)); } if (string.IsNullOrWhiteSpace(result.token)) { ModelState.AddModelError(result.type, result.message); return(View(model)); } SaveReference(result.token, invoiceReference, model.Amount); return(Redirect(CpgUrl.TrimEnd('/') + "/" + result.token)); }