我正在尝试将平衡支付处理合并到我的网站中,但是,他们的解决方案假定正在使用标准 HTML 表单并使用 jQuery 检索它。由于我使用 knockout.js 为我的表单提供动力,因此输入的引用方式不同,这意味着我必须修改我的表单。对于此示例,我手动设置信用卡数据的值,而不是从 $(#credit-card-form)
当我打开网络选项卡检查错误时,它显示“未捕获的类型错误:对象# 的属性 '0' 不是函数”,我认为这是对附加到 creditCardData 的输入属性的引用
这个小提琴是 Balanced 给出的例子来展示它是如何工作的。在 javascript 区域中,您必须创建一个新的请求 bin并将该 bin 复制到代码中。然后,当您更新代码并单击“tokenize”时,访问该请求 bin URL,您将看到请求已提交。
我创建了这个正确标记卡片的小提琴,但是我遇到了错误并且不能完全确定它们来自哪里。请记住,您必须创建自己的requestbin并将该 URL 复制/粘贴到代码中。只是提醒一下,那个“标记化”按钮不会做任何事情。我只是将 HTML 留在那里,考虑到小提琴打开后立即调用该函数,它实际上并没有做任何事情。
我的版本和 Balanced 版本的主要区别在于对balanced.js 函数的初始调用。
//paidForItems is a button set with knockout.js
self.paidForItems = function() {
//responseCallbackHandler here, see fiddle for details
var creditCardData = {
card_number: '4111111111111111',
expiration_month: '01',
expiration_year: '2020',
security_code: '123'
};
balanced.card.create(creditCardData, responseCallbackHandler);
}
而平衡在提交表格时
//responseCallbackHandler here, see fiddle for details
var tokenizeInstrument = function(e) {
e.preventDefault();
var $form = $('#credit-card-form');
var creditCardData = {
card_number: $form.find('.cc-number').val(),
expiration_month: $form.find('.cc-em').val(),
expiration_year: $form.find('.cc-ey').val(),
security_code: $form.find('cc-csc').val()
};
balanced.card.create(creditCardData, responseCallbackHandler);
};
$('#credit-card-form').submit(tokenizeInstrument);