Значение не может быть нулевым. Имя параметра: s, ошибка песочницы 2Chekout
Я использую asp.net mvc 4
а также 2Checkout
сделать онлайн систему транзакций. Я использую учетную запись 2Checkout для тестирования системы и следую их руководству для тестирования. По какой-то причине я получаю эту ошибку,
Значение не может быть нулевым. Имя параметра: s
Вот мои коды,
контроллер
public ActionResult CheckOut()
{
return View();
}
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Process()
{
TwoCheckoutConfig.SellerID = "901299852";
TwoCheckoutConfig.PrivateKey = "9E1A8B89-2A90-40D7-A7F5-CBF252B3B4A0";
TwoCheckoutConfig.Sandbox = true;
try
{
var Billing = new AuthBillingAddress();
Billing.addrLine1 = "123 test st";
Billing.city = "Columbus";
Billing.zipCode = "43123";
Billing.state = "OH";
Billing.country = "USA";
Billing.name = "Testing Tester";
Billing.email = "example@2co.com";
Billing.phoneNumber = "5555555555";
Billing.phoneExt = "555";
var Customer = new ChargeAuthorizeServiceOptions();
Customer.total = (decimal)1.00;
Customer.currency = "USD";
Customer.merchantOrderId = "123";
Customer.billingAddr = Billing;
Customer.token = Request["token"];
var Charge = new ChargeService();
var result = Charge.Authorize(Customer); // Error getting in this line
ViewBag.Message = result.responseMsg;
}
catch (TwoCheckoutException e)
{
ViewBag.Message = e.Message.ToString();
}
return View();
}
Просмотр (CheckOut)
<div class="container well">
@using (Html.BeginForm("Process", "Home", FormMethod.Post, new { id = "myCCForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "Error! Please provide valid information!")
<input id="token" name="token" type="hidden" value="">
<div>
<label>
<span>Card Number</span>
</label>
<input id="ccNo" type="text" size="20" value="" autocomplete="off" required />
</div>
<div>
<label>
<span>Expiration Date (MM/YYYY)</span>
</label>
<input type="text" size="2" id="expMonth" required />
<span>/ </span>
<input type="text" size="2" id="expYear" required />
</div>
<div>
<label>
<span>CVC</span>
</label>
<input id="cvv" size="4" type="text" value="" autocomplete="off" required />
</div>
<input type="submit" value="Submit Payment">
}
</div>
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="https://www.2checkout.com/checkout/api/2co.min.js"></script>
<script>
// Called when token created successfully.
var successCallback = function(data) {
var myForm = document.getElementById('myCCForm');
// Set the token as the value for the token input
myForm.token.value = data.response.token.token;
// IMPORTANT: Here we call `submit()` on the form element directly instead of using jQuery to prevent and infinite token request loop.
myForm.submit();
};
// Called when token creation fails.
var errorCallback = function(data) {
if (data.errorCode === 200) {tokenRequest();} else {alert(data.errorMsg);}
};
var tokenRequest = function() {
// Setup token request arguments
var args = {
sellerId: "901299852",
publishableKey: "F4AA3A98-B605-423E-ACAC-D70BCB50A7F7",
ccNo: $("#ccNo").val(),
cvv: $("#cvv").val(),
expMonth: $("#expMonth").val(),
expYear: $("#expYear").val()
};
// Make the token request
TCO.requestToken(successCallback, errorCallback, args);
};
$(function() {
// Pull in the public encryption key for our environment
TCO.loadPubKey('sandbox');
$("#myCCForm").submit(function(e) {
// Call our token request function
tokenRequest();
// Prevent form from submitting
return false;
});
});
</script>
Просмотр (Процесс)
<div class="container well">
<h3 class="text-center">@ViewBag.Message</h3>
</div>
Кто-нибудь знает, почему я получаю эту ошибку? Как я могу решить это? Очень нужна эта помощь! Благодарю.
3 ответа
Была такая же проблема. Все, что вам нужно, это удалить пакет Nuget и скачать DLL с 2checkout Github. Вот и все - все будет работать. Каким-то образом пакет Nuget устарел.
Я также столкнулся с той же проблемой.
Я только что создал новый проект и написал тот же код в новом проекте. и теперь все работает нормально.
Пожалуйста, проверьте дамп стека, обычно это происходит, когда System.IO.StringReader..ctor(String s) ожидает ненулевую строку, а вместо этого передается как ноль. Вы также должны проверить разрешения для исходных файлов, чтобы убедиться, что процесс.Net имеет доступ к файлам. Доступ для чтения должен быть достаточным.