用代币结账
本文关键字: | 更新日期: 2023-09-27 18:17:21
我正在尝试使用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-你的脚本依赖于JQuery,因此你需要确保在你的html页面中有以下一行,这样你的Ajax请求就可以工作了:
2-当您填写所需的卡片信息并单击Pay Now按钮时,CheckoutKit.js将首先连接到沙箱,为您生成卡片令牌,例如card_tok_C739732A…
您是否可以在浏览器控制台中检查是否收到成功的响应。
3-一旦你得到卡令牌,你的脚本将发布一个Ajax调用收费端点,你定义为你的动作方法。
您可以检查您的cardToken参数是否在您的操作中填充了一个值。
4-你可以调试你的代码来检查你是否收到任何响应以下调用,因为它会返回你一个响应(有60秒超时):
HttpResponse response = CheckoutClient.ChargeService.ChargeWithCardToken(cardTokenChargeModel);
让我们看看你会有什么反应,这样我们就可以进一步调查了。我很乐意在这个问题上为你提供帮助。
谢谢