Ios 爱奥尼亚2卡IO插件-扫描()
摘要 我正在我的爱奥尼亚2项目中使用Card IO Cordova插件。它可以正确扫描并允许手动输入。输入信息时,我将扫描/手动输入的值设置为模板中显示的数据绑定值。持卡人姓名、已编辑的卡号和cvv都绑定回我的模板,我在模板中显示了卡的详细信息以供确认。但是,到期日期、到期年份和邮政编码似乎不具有约束力 例如:Ios 爱奥尼亚2卡IO插件-扫描(),ios,cordova,angular,data-binding,ionic2,Ios,Cordova,Angular,Data Binding,Ionic2,摘要 我正在我的爱奥尼亚2项目中使用Card IO Cordova插件。它可以正确扫描并允许手动输入。输入信息时,我将扫描/手动输入的值设置为模板中显示的数据绑定值。持卡人姓名、已编辑的卡号和cvv都绑定回我的模板,我在模板中显示了卡的详细信息以供确认。但是,到期日期、到期年份和邮政编码似乎不具有约束力 例如: ---template--- -not working <ion-input type="text" [(ngModel)]="postalCode"></ion-in
---template---
-not working
<ion-input type="text" [(ngModel)]="postalCode"></ion-input>
-working
<ion-input type="text" [(ngModel)]="redactedCardNumber"></ion-input>
---component controller---
goCardIO() {
console.log("hello")
this.platform.ready().then(() => {
CardIO.canScan().then((res: boolean) => {
if (res) {
let options = {
requireCardholderName: true,
requireExpiry: true,
requireCCV: true,
requirePostalCode: true,
scanInstructions: "Scan the front of your card",
scanExpiry: true,
scanCardHolderName: true,
guideColor: '#12be76',
hideCardIOLogo: true
};
CardIO.scan(options).then((data) => {
this.setCardData(data);
console.log("CONSOLEEEE >>>>>> " + data.postalCode)
}, err => {
console.log(err);
// An error occurred
});
}
});
});
}
setCardData(data: any) {
this.cardObj = data;
this.cardHolderName = data.cardholderName;
this.cvv = data.cvv;
this.redactedCardNumber = data.redactedCardNumber;
this.cardNumber = data.cardNumber;
// Nothing happening here apparently?
this.expiryMonth = data.expiryMonth;
this.expiryYear = data.expiryYear;
this.postalCode = data.postalCode;
}
---模板---
-不起作用
-工作
---组件控制器---
goCardIO(){
log(“你好”)
this.platform.ready()。然后(()=>{
CardIO.canScan().then((res:boolean)=>{
如果(res){
让选项={
requireCardholderName:是的,
要求解释:是的,
是的,
要求代码:正确,
扫描说明:“扫描您卡的正面”,
对,,
姓名:对,
指南颜色:“#12be76”,
hideCardIOLogo:是的
};
心脏扫描(选项)。然后((数据)=>{
此.setCardData(数据);
console.log(“CONSOLEEEE>>>>>>”+data.postalCode)
},err=>{
控制台日志(err);
//发生了一个错误
});
}
});
});
}
setCardData(数据:任意){
this.cardObj=数据;
this.cardingName=data.cardingName;
this.cvv=data.cvv;
this.redactedCardNumber=data.redactedCardNumber;
this.cardname=data.cardname;
//显然这里什么都没发生?
this.expiryMonth=data.expiryMonth;
this.expiryYear=data.expiryYear;
this.postalCode=data.postalCode;
}
结论:
---template---
-not working
<ion-input type="text" [(ngModel)]="postalCode"></ion-input>
-working
<ion-input type="text" [(ngModel)]="redactedCardNumber"></ion-input>
---component controller---
goCardIO() {
console.log("hello")
this.platform.ready().then(() => {
CardIO.canScan().then((res: boolean) => {
if (res) {
let options = {
requireCardholderName: true,
requireExpiry: true,
requireCCV: true,
requirePostalCode: true,
scanInstructions: "Scan the front of your card",
scanExpiry: true,
scanCardHolderName: true,
guideColor: '#12be76',
hideCardIOLogo: true
};
CardIO.scan(options).then((data) => {
this.setCardData(data);
console.log("CONSOLEEEE >>>>>> " + data.postalCode)
}, err => {
console.log(err);
// An error occurred
});
}
});
});
}
setCardData(data: any) {
this.cardObj = data;
this.cardHolderName = data.cardholderName;
this.cvv = data.cvv;
this.redactedCardNumber = data.redactedCardNumber;
this.cardNumber = data.cardNumber;
// Nothing happening here apparently?
this.expiryMonth = data.expiryMonth;
this.expiryYear = data.expiryYear;
this.postalCode = data.postalCode;
}
我叫goCardIO()。它会打开扫描仪。它扫描卡片。我输入额外的必需信息。我打下一个。然后,我将setCardData()中的“data”设置为绑定到模板的值。我只是不明白为什么postalCode不起作用,但redactedCardNumber起作用。此外,我只能在设备中测试这个插件,而且我似乎无法在xCode中显示任何控制台日志
我的猜测
有一秒钟,我以为我的ios版本没有更新。但是后来我在模板中使用了一些标签,它们被更新了。所以不应该是这样。但是,我在别处看到了控制台日志,但是我在goCardIO()中放置的新日志没有打印出来
我只是访问了错误的字段“数据”对象吗?我得到了它。扫描后,您将获得以下数据:
{"cardType":"MasterCard","redactedCardNumber":"•••• •••• •••• 1111","cardNumber":"4111111111111111","expiryMonth":2,"expiryYear":2021,"postalCode":"1233","cardholderName":"javier"}
但你不会得到CVV。由于证券方面的原因,你必须写Cvv
这是我的选择:
let options = {
requireCardholderName: true,
requireExpiry: true,
requireCCV: true,
requirePostalCode: true,
scanInstructions: "Escanee la parte frontal de su Tarjeta",
scanExpiry: true,
scanCardHolderName: true,
keepApplicationTheme:true,
guideColor: '#12be76',
hideCardIOLogo: true,
useCardIOLogo:false,
};