示例#1
0
        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);
        }
示例#2
0
        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));
        }