带有令牌的结账费用

时间:2015-10-13 09:32:34

标签: c# .net asp.net-mvc payment checkout-payments

我正在尝试使用checkout.com向信用卡收费。我正在使用充值卡令牌。我使用checkoutkit.js生成了卡令牌。并将该令牌传递给我的控制器,我正在拨打电话。但我没有得到回复。即使在调试模式下,它也不会移动到下一行。我的视图和控制器代码:

        <script>
        window.CKOConfig = {
            debugMode: true,
            publicKey: 'pk_test_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac',
            customerEmail: 'random@email.com',
            ready: function (event) {
                console.log("CheckoutKit.js is ready");
                CheckoutKit.monitorForm('.card-form', CheckoutKit.CardFormModes.CARD_TOKENISATION);
            },
            apiError: function (event) {
                alert('api error');
            },
            cardTokenised: function(e) {
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("Charge")',
                    data: { cardToken: e.data.id },
                    success: function (data) {
                        alert(data);
                        location.reload();
                    },
                    error: function() {
                        alert('error');
                    }
                });
            }
        };
    </script>

    <script async src="https://sandbox.checkout.com/js/v1/checkoutkit.js"></script>

    <div class="jumbotron">
        <form class="card-form" method="POST">
            <input data-checkout="email-address" type="email" placeholder="Email address">
            <input data-checkout="card-number" type="text" placeholder="Credit card number">
            <input data-checkout="card-name" type="text" placeholder="Name on card">
            <input data-checkout="expiry-month" type="text" placeholder="MM">
            <input data-checkout="expiry-year" type="text" placeholder="YY">
            <input data-checkout="cvv" type="text" placeholder="CVV">
            <input type="submit" value="Pay Now">
        </form>
    </div>

[HttpPost]
            public ActionResult Charge(string cardToken)
            {
                APIClient CheckoutClient = new APIClient("sk_test_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", Environment.Sandbox);

                CardTokenCharge cardTokenChargeModel = TestHelper.GetCardTokenChargeCreateModel(cardToken, TestHelper.RandomData.Email);

                HttpResponse<Charge> response = CheckoutClient.ChargeService.ChargeWithCardToken(cardTokenChargeModel);

                return Json(cardToken);
            }

1 个答案:

答案 0 :(得分:1)

我已经检查了这个过程,看起来工作正常,但有几件事我想和你确认。

请确保您按照以下步骤操作:

1-您的脚本依赖于JQuery,因此您需要确保在html页面中包含以下行,以便您的Ajax请求可以正常工作:

2-当您填充所需的卡信息并单击立即付款按钮时,CheckoutKit.js将首先连接到沙箱以为您生成卡令牌,例如card_tok_C739732A ...

您可以在浏览器控制台中检查是否收到成功的回复。

3-获得卡令牌后,您的脚本将向您定义为操作方法的充电端点发布Ajax调用。

您可以检查操作中的cardToken参数是否填充了值。

4-您是否可以调试代码以检查是否收到以下呼叫的任何响应,因为它会返回响应(有60秒的时间):

HttpResponse response = CheckoutClient.ChargeService.ChargeWithCardToken(cardTokenChargeModel);

让我们看看你会有什么回应,以便我们对此进行更多调查。我很乐意为您提供有关此问题的帮助。

感谢