Я использую полосовый платежный шлюз для транзакции электронной коммерции. Чтобы общаться, я должен использовать URL -адрес Webhook, что я предоставлю URL, чтобы они могли сменить с нами. Когда я запускаю приложение локально и ввожу контроллер и действие в браузере, он нажимает на действие. Но когда я развернулся на своем тестовом сервере и делаю то же самое, он дает следующую ошибку < /p>
Ошибка сервера в ' /' Application.
Устройство не готово. < /P>
< /blockquote>
trace: < /> < /p>
stack: < /> < /p>
[IOException: The device is not ready.
]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +14840940
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1430
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +211
System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost) +210
System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost) +87
SchoolManagement.DTO.Entities.OrderItem.SavePartialCharge(String invoiceData) in c:\Atlassian\Bamboo-home\xml-data\build-dir\SMS-PPINBOX-JOB1\SchoolDTO\Entities\OrderItem.cs:185
SchoolWeb.Controllers.StripeWebhookController.GetStripeResponse() in c:\Atlassian\Bamboo-home\xml-data\build-dir\SMS-PPINBOX-JOB1\SchoolWeb\Controllers\StripeWebhookController.cs:24
lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +270
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.Async.c__DisplayClass39.b__33() +120
System.Web.Mvc.Async.c__DisplayClass4f.b__49() +452
System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.c__DisplayClass2a.b__20() +33
System.Web.Mvc.Async.c__DisplayClass25.b__22(IAsyncResult asyncResult) +240
System.Web.Mvc.c__DisplayClass1d.b__18(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.Mvc.c__DisplayClass8.b__3(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
< /code>
Может ли кто -нибудь помочь мне решить эту проблему.public class StripeWebhookController : BaseController
{
//
// GET: /StripeWebhook/
[AllowAnonymous]
public JsonResult GetStripeResponse()
{
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
DTO.OrderItem.SavePartialCharge(json);
return Json("", JsonRequestBehavior.AllowGet);
}
}
< /code>
Добавление метода SavePartialGharge < /p>
public static String SavePartialCharge(string invoiceData)
{
try
{
string stripeEventType = BL.PaymentGateway.StripeReturn.GetStripeType(invoiceData);
var obj = JObject.Parse(invoiceData);
var dataObj = obj.SelectToken("data.object");
var subscriptionID = dataObj.SelectToken("subscription").ToString();
var customerID = dataObj.SelectToken("customer").ToString();
var chargeID = dataObj.SelectToken("charge").ToString();
var amount = Convert.ToDecimal(!dataObj.SelectToken("subtotal").ToString().IsNullOrEmpty() ?dataObj.SelectToken("subtotal").ToString() : "0");
using (var db = new SchoolEntities())
{
switch (stripeEventType)
{
case "invoice.payment_failed":
var resultorderFailed =
db.OrderItems.Where(oi => oi.MerchantServiceSubscriptionID == subscriptionID)
.Select(oi => new {oi.ID, oi.Order.CreditCard4Digits})
.FirstOrDefault();
if (resultorderFailed != null)
OrderItemInstallment.AddOrderItemInstallment(db, resultorderFailed.ID, amount,
resultorderFailed.CreditCard4Digits, chargeID, false);
return "";
case "invoice.payment_succeeded":
var resultOrderSucceed =
db.OrderItems.Where(oi => oi.MerchantServiceSubscriptionID == subscriptionID)
.Select(oi => new {oi.ID, oi.Order.CreditCard4Digits, oi.TotalInstallments})
.FirstOrDefault();
if (resultOrderSucceed != null)
{
OrderItemInstallment.AddOrderItemInstallment(db, resultOrderSucceed.ID, amount,
resultOrderSucceed.CreditCard4Digits, chargeID, true);
var count =
db.OrderItemInstallments.Count(
oii => oii.OrderItemID == resultOrderSucceed.ID && oii.Success);
if (count == resultOrderSucceed.TotalInstallments)
BL.PaymentGateway.StripePaymentGateway.CancelSubscription(customerID,
subscriptionID);
}
return "";
}
}
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"D:\exception.txt", ex.Message);
}
return "";
}
Подробнее здесь: https://stackoverflow.com/questions/308 ... on-browser
Устройство не готово к ошибке при вводе URL -адреса в браузере ⇐ C#
Место общения программистов C#
-
Anonymous
1755267607
Anonymous
Я использую полосовый платежный шлюз для транзакции электронной коммерции. Чтобы общаться, я должен использовать URL -адрес Webhook, что я предоставлю URL, чтобы они могли сменить с нами. Когда я запускаю приложение локально и ввожу контроллер и действие в браузере, он нажимает на действие. Но когда я развернулся на своем тестовом сервере и делаю то же самое, он дает следующую ошибку < /p>
Ошибка сервера в ' /' Application.
Устройство не готово. < /P>
< /blockquote>
trace: < /> < /p>
stack: < /> < /p>
[IOException: The device is not ready.
]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +14840940
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1430
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +211
System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize, Boolean checkHost) +210
System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost) +87
SchoolManagement.DTO.Entities.OrderItem.SavePartialCharge(String invoiceData) in c:\Atlassian\Bamboo-home\xml-data\build-dir\SMS-PPINBOX-JOB1\SchoolDTO\Entities\OrderItem.cs:185
SchoolWeb.Controllers.StripeWebhookController.GetStripeResponse() in c:\Atlassian\Bamboo-home\xml-data\build-dir\SMS-PPINBOX-JOB1\SchoolWeb\Controllers\StripeWebhookController.cs:24
lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +270
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.Async.c__DisplayClass39.b__33() +120
System.Web.Mvc.Async.c__DisplayClass4f.b__49() +452
System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.c__DisplayClass2a.b__20() +33
System.Web.Mvc.Async.c__DisplayClass25.b__22(IAsyncResult asyncResult) +240
System.Web.Mvc.c__DisplayClass1d.b__18(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.Mvc.c__DisplayClass8.b__3(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +15
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
< /code>
Может ли кто -нибудь помочь мне решить эту проблему.public class StripeWebhookController : BaseController
{
//
// GET: /StripeWebhook/
[AllowAnonymous]
public JsonResult GetStripeResponse()
{
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
DTO.OrderItem.SavePartialCharge(json);
return Json("", JsonRequestBehavior.AllowGet);
}
}
< /code>
Добавление метода SavePartialGharge < /p>
public static String SavePartialCharge(string invoiceData)
{
try
{
string stripeEventType = BL.PaymentGateway.StripeReturn.GetStripeType(invoiceData);
var obj = JObject.Parse(invoiceData);
var dataObj = obj.SelectToken("data.object");
var subscriptionID = dataObj.SelectToken("subscription").ToString();
var customerID = dataObj.SelectToken("customer").ToString();
var chargeID = dataObj.SelectToken("charge").ToString();
var amount = Convert.ToDecimal(!dataObj.SelectToken("subtotal").ToString().IsNullOrEmpty() ?dataObj.SelectToken("subtotal").ToString() : "0");
using (var db = new SchoolEntities())
{
switch (stripeEventType)
{
case "invoice.payment_failed":
var resultorderFailed =
db.OrderItems.Where(oi => oi.MerchantServiceSubscriptionID == subscriptionID)
.Select(oi => new {oi.ID, oi.Order.CreditCard4Digits})
.FirstOrDefault();
if (resultorderFailed != null)
OrderItemInstallment.AddOrderItemInstallment(db, resultorderFailed.ID, amount,
resultorderFailed.CreditCard4Digits, chargeID, false);
return "";
case "invoice.payment_succeeded":
var resultOrderSucceed =
db.OrderItems.Where(oi => oi.MerchantServiceSubscriptionID == subscriptionID)
.Select(oi => new {oi.ID, oi.Order.CreditCard4Digits, oi.TotalInstallments})
.FirstOrDefault();
if (resultOrderSucceed != null)
{
OrderItemInstallment.AddOrderItemInstallment(db, resultOrderSucceed.ID, amount,
resultOrderSucceed.CreditCard4Digits, chargeID, true);
var count =
db.OrderItemInstallments.Count(
oii => oii.OrderItemID == resultOrderSucceed.ID && oii.Success);
if (count == resultOrderSucceed.TotalInstallments)
BL.PaymentGateway.StripePaymentGateway.CancelSubscription(customerID,
subscriptionID);
}
return "";
}
}
}
catch (Exception ex)
{
System.IO.File.WriteAllText(@"D:\exception.txt", ex.Message);
}
return "";
}
Подробнее здесь: [url]https://stackoverflow.com/questions/30841504/the-device-is-not-ready-error-when-typing-url-on-browser[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия