发送Webmethod的邮递员意想不到的's'

Vik*_*ant 7 c# ajax webmethod stripe-payments postman

整合付款结帐Stripe.使用JavaScript Stripe处理程序,在事务上应用条带费用.
在向客户收费后,它返回令牌.使用此令牌,我们可以进行实际付款.

这是AJAX对付款功能的调用:

var StripeHelper =
    {
        payProceed: function (token) {
            try {
                var _ajax = new AjaxHelper("/Services/Service.asmx/PaymentProceed");
                _ajax.Data = "{token:" + JSON.stringify(token) + "}";
                _ajax.OnInit = function () { PageHelper.loading(true); };
                _ajax.OnSuccess = function (data) {
                    console.log(data.d);
                    PageHelper.loading(false);
                    window.location('/payment-success');
                };
                _ajax.Init();
            }
            catch (e) {
                PageHelper.loading(false);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的TEST服务器上的Web方法,它将令牌传递给Stripe服务器:

[WebMethod(EnableSession = true)]
    public string PaymentProceed(string token)
    {
        Session["PAYMENT_MODE"] = PaymentContants.PaymentVia.Stripe;
        var myCharge = new StripeChargeCreateOptions();
        myCharge.AmountInCents = 100;
        myCharge.Currency = "USD";
        myCharge.Description = "Charge for property sign and postage";
        myCharge.TokenId = token;
        string key = "sk_test_Uvk2cH***********Fvs"; //test key

        var chargeService = new StripeChargeService(key);
        StripeCharge stripeCharge = new StripeCharge();
        //Error is coming for below line -->
        stripeCharge = chargeService.Create(myCharge);
        //No token found

        return stripeCharge.Id;
    }
Run Code Online (Sandbox Code Playgroud)

如果我在POSTMAN上POST POST AJAX,它会显示

JSON意外的's'.

一般来说意味着什么,特别是在这种情况下?

Mih*_*ave 1

问题出在这一行

_ajax.Data = "{token:" + JSON.stringify(token) + "}";

你应该使用

var token = '"Your token with S goes here"';
_ajax.Data = "{token:" + JSON.stringify(token) + "}";
Run Code Online (Sandbox Code Playgroud)

因为只有 token 不是有效的 json 并且您正在尝试解析它

请参阅参考资料