CardIO插件 - 在Android上手动输入卡详细信息的问题

时间:2016-08-19 10:18:47

标签: android cordova ionic-framework hybrid-mobile-app card.io

我在Ionic App中实现了以下CardIO插件: https://github.com/card-io/card.io-Cordova-Plugin 这适用于iOS。但是,在Android上,当我使用相机屏幕中的键盘选项手动输入卡片详细信息时,它会先暂时加载正确的屏幕,然后跳回应用程序的第一个屏幕(本例中为注册屏幕) 。在调试应用程序流时,我看到Card IO的回调工作正常,但是当Ionic处理事件时似乎存在问题。 任何帮助非常感谢!

以下是我的控制器中的代码:

$scope.$on('$ionicView.beforeEnter', function()
{
   $scope.creditCardScanning();
}

$scope.creditCardScanning = function(){

    var cardIOResponseFields = [
        "cardType",
        "redactedCardNumber",
        "cardNumber",
        "expiryMonth",
        "expiryYear",
        "cvv",
        "postalCode"
    ];


    var onCardIOComplete = function(response) {

        for (var i = 0; i < cardIOResponseFields.length; i++) {
            var field = cardIOResponseFields[i];
        }


        var cardName = response[cardIOResponseFields[0]].toUpperCase();
        for (i = 0; i < $scope.cardtype.length; i++) {
            var cardTypeDict = $scope.cardtype[i];
            if(cardTypeDict.card_type_name === cardName){
                document.getElementById('cardtype').selectedIndex = i;
                $scope.params.card_type = cardName;
                break;
            }
        }

        document.getElementById('cardNumber').value = response[cardIOResponseFields[2]];
        $scope.params.card_number = response[cardIOResponseFields[2]];

        var expMonthVal = response[cardIOResponseFields[3]];

            for(i=0;i < $scope.expmonth.length; i++) {
                var expMonthDict = $scope.expmonth[i];
                if(expMonthDict.value === expMonthVal){
                    document.getElementById('expmonth').selectedIndex = i;
                    $scope.params.expiration_month = expMonthDict.value;
                    break;
               }
            }

        for (i = 0; i < $scope.expyear.length; i++) {
            var expYearDict = $scope.expyear[i];
            if(expYearDict.value === response[cardIOResponseFields[4]]){
                document.getElementById('expyear').selectedIndex = i;
                $scope.params.expiration_year = response[cardIOResponseFields[4]];
                break;
            }
        }

        document.getElementById('cvv').value = response[cardIOResponseFields[5]];
        $scope.params.security_code = response[cardIOResponseFields[5]];
    };

    var onCardIOCancel = function() {
        console.log("card.io scan cancelled");
    };

    var onCardIOCheck = function (canScan) {
        console.log("card.io canScan? " + canScan);
        var scanBtn = document.getElementById("scanBtn");
        if (!canScan) {
            console.log("Cannot scan card");
        }
        scanBtn.onclick = function (e) {

                    CardIO.scan({
                           "requireExpiry": true,
                           "requireCVV": true,
                           "requirePostalCode": false,
                           "shows_first_use_alert": true,
                           "disable_manual_entry_buttons": false
                           },
                           onCardIOComplete,
                           onCardIOCancel
                           );

        }
    };
    CardIO.canScan(onCardIOCheck);
}

在我看来,一旦成功输入卡片详细信息并点击“下一步”按钮,我就会调用该功能来加载下一页。

0 个答案:

没有答案