Cordova Card.IO 插件实现
Cordova Card.IO plugin implementation
我在为 Cordova 实施 Card.io 插件时遇到了一些问题。 github页面上有关于如何安装和实现插件的说明:https://github.com/card-io/card.io-Cordova-Plugin
我通过
添加了暴跌
$ cordova plugin add https:///...
并添加了他们告诉您在 github 页面上添加的按钮。到目前为止,我很确定我正在按照我应该的方式做所有事情。现在问题来了,应用程序中的实际实现。我在我的应用程序中使用 ui 框架,因此,我没有 index.js 文件,我的代码看起来也不像标准 index.js 中的代码设备就绪处理。我只是...
.ready(function() {
// Code to fire on device ready.
}):
我对回调有点熟悉,但我不知道他们的示例中发生了什么。整个 "example : function() {..." 对我来说是全新的。
有人可以重写该示例,使其成为一些结构良好且更有意义的函数吗?
我试过这样做,我的代码现在看起来像这样:
.ready(function() {
CardIO.canScan(onCardIOCheck);
});
function onCardIOComplete() {
var cardIOResponseFields = [
"cardType",
"redactedCardNumber",
"cardNumber",
"expiryMonth",
"expiryYear",
"cvv",
"postalCode"
];
var len = cardIOResponseFields.length;
alert("card.io scan complete");
for (var i = 0; i < len; i++) {
var field = cardIOResponseFields[i];
alert(field + ": " + response[field]);
}
}
function onCardIOCancel() {
alert("card.io scan cancelled");
}
function onCardIOCheck(canScan) {
alert("card.io canScan? " + canScan);
var scanBtn = document.getElementById("scanBtn");
if (!canScan) {
scanBtn.innerHTML = "Manual entry";
}
scanBtn.addEventListener("click", function(e) {
var options = {
"requireExpiry": true,
"requireCVV": false,
"requirePostalCode": false,
"restrictPostalCodeToNumericOnly": true
};
CardIO.scan(options, onCardIOComplete, onCardIOCancel);
});
}
虽然这不起作用。我在 .ready() 函数内的调用两侧添加了 alert() ,以查看它是否触发。两者都触发,但好像 Card.canScan() 函数根本没有触发。我也在 onCardIOCheck 函数中添加了一个 alert() ,以查看它是否曾经达到,但它没有。
如有任何帮助,我们将不胜感激。
(请注意:我不使用 Angular.js,我只使用纯 Javascript,偶尔使用 jQuery)
你需要更换
.ready(function() {
CardIO.canScan(onCardIOCheck);
});
与
document.addEventListener('deviceready', function() {
CardIO.canScan(onCardIOCheck);
}, false);
您使用的就绪事件是 DOM 而不是 cordova 插件的就绪事件。我相信当您调用 CardIO.canScan(onCardIOCheck);
时插件没有加载,这就是它不起作用的原因。
我在为 Cordova 实施 Card.io 插件时遇到了一些问题。 github页面上有关于如何安装和实现插件的说明:https://github.com/card-io/card.io-Cordova-Plugin
我通过
添加了暴跌$ cordova plugin add https:///...
并添加了他们告诉您在 github 页面上添加的按钮。到目前为止,我很确定我正在按照我应该的方式做所有事情。现在问题来了,应用程序中的实际实现。我在我的应用程序中使用 ui 框架,因此,我没有 index.js 文件,我的代码看起来也不像标准 index.js 中的代码设备就绪处理。我只是...
.ready(function() {
// Code to fire on device ready.
}):
我对回调有点熟悉,但我不知道他们的示例中发生了什么。整个 "example : function() {..." 对我来说是全新的。
有人可以重写该示例,使其成为一些结构良好且更有意义的函数吗?
我试过这样做,我的代码现在看起来像这样:
.ready(function() {
CardIO.canScan(onCardIOCheck);
});
function onCardIOComplete() {
var cardIOResponseFields = [
"cardType",
"redactedCardNumber",
"cardNumber",
"expiryMonth",
"expiryYear",
"cvv",
"postalCode"
];
var len = cardIOResponseFields.length;
alert("card.io scan complete");
for (var i = 0; i < len; i++) {
var field = cardIOResponseFields[i];
alert(field + ": " + response[field]);
}
}
function onCardIOCancel() {
alert("card.io scan cancelled");
}
function onCardIOCheck(canScan) {
alert("card.io canScan? " + canScan);
var scanBtn = document.getElementById("scanBtn");
if (!canScan) {
scanBtn.innerHTML = "Manual entry";
}
scanBtn.addEventListener("click", function(e) {
var options = {
"requireExpiry": true,
"requireCVV": false,
"requirePostalCode": false,
"restrictPostalCodeToNumericOnly": true
};
CardIO.scan(options, onCardIOComplete, onCardIOCancel);
});
}
虽然这不起作用。我在 .ready() 函数内的调用两侧添加了 alert() ,以查看它是否触发。两者都触发,但好像 Card.canScan() 函数根本没有触发。我也在 onCardIOCheck 函数中添加了一个 alert() ,以查看它是否曾经达到,但它没有。
如有任何帮助,我们将不胜感激。
(请注意:我不使用 Angular.js,我只使用纯 Javascript,偶尔使用 jQuery)
你需要更换
.ready(function() {
CardIO.canScan(onCardIOCheck);
});
与
document.addEventListener('deviceready', function() {
CardIO.canScan(onCardIOCheck);
}, false);
您使用的就绪事件是 DOM 而不是 cordova 插件的就绪事件。我相信当您调用 CardIO.canScan(onCardIOCheck);
时插件没有加载,这就是它不起作用的原因。