值不能为空.参数名称:s,2 Chekout沙箱错误

问题描述:

我正在使用 asp.net mvc 4 2Checkout 创建一个在线交易系统.我正在使用2Checkout沙箱帐户测试系统,并按照 其教程> 进行测试.由于某种原因,我收到此错误,

I'm using asp.net mvc 4 and 2Checkout to make an online transaction system. I'm using 2Checkout sandbox account to test the system and following their tutorial for testing. For some reason, I'm getting this error,

值不能为null.参数名称:s

Value cannot be null. Parameter name: 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();
    }

查看(签出)

<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>

任何人都知道为什么我会收到此错误?我该如何解决?急需此帮助!谢谢.

Anyone knows why I'm getting this error? How can I resolve it? Need this help badly! Thanks.

出现相同的问题.您所需要做的就是删除Nuget程序包,然后从2checkout Github 下载dll.仅此而已-一切都会正常进行.不知何故,Nuget软件包已过时.

Had the same problem. All you need is to delete Nuget package and download dll from 2checkout Github. That's all - everything will work. Somehow Nuget package is obsolete.