我正在尝试使用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);
}
答案 0 :(得分:1)
我已经检查了这个过程,看起来工作正常,但有几件事我想和你确认。
请确保您按照以下步骤操作:
1-您的脚本依赖于JQuery,因此您需要确保在html页面中包含以下行,以便您的Ajax请求可以正常工作:
2-当您填充所需的卡信息并单击立即付款按钮时,CheckoutKit.js将首先连接到沙箱以为您生成卡令牌,例如card_tok_C739732A ...
您可以在浏览器控制台中检查是否收到成功的回复。
3-获得卡令牌后,您的脚本将向您定义为操作方法的充电端点发布Ajax调用。
您可以检查操作中的cardToken参数是否填充了值。
4-您是否可以调试代码以检查是否收到以下呼叫的任何响应,因为它会返回响应(有60秒的时间):
HttpResponse response = CheckoutClient.ChargeService.ChargeWithCardToken(cardTokenChargeModel);
让我们看看你会有什么回应,以便我们对此进行更多调查。我很乐意为您提供有关此问题的帮助。
感谢