Braintree javascript脚本无法在UserAgent ios10上运行

时间:2017-08-22 05:54:09

标签: javascript php laravel blade braintree

我在视图文件中添加了以下刀片代码,用于通过Braintree添加信用卡。

<form id="form-add-card" class="popup-form" method="POST" action="{{ url('account/credit-card') }}">
    <div id="card-braintree">
        <div class="row">
            <div class="input-field col s12 mbm">
                <h6>Add a card</h6>
            </div>
            <div class="input-field col s12">
                <input placeholder="XXXX XXXX XXXX XXXX" id="card_no"  maxlength="16" type="text" data-braintree-name="number" class="validate">
                <label for="card_no">Card Number</label>
            </div>
            <div class="input-field col s6">
                <input placeholder="MM / YY" id="valid_until" type="text" data-braintree-name="expiration_date" class="validate">
                <label for="valid_until">Valid Until</label>
            </div>
            <div class="col s12">
                <p class="small-notice light-text mtm">We accept both Visa and MasterCard payment and has a validated certification for PCI DSS Compliant Service Provider.</p>
            </div>
            <div class="input-field col s12">
                <button class="waves-effect waves-light btn load">Save Card</button>
            </div>
        </div>
    </div>
</form>

然后按如下方式为Braintree设置javascript:

    <script src="https://js.braintreegateway.com/v2/braintree.js"></script>
    <script>
    $(document).ready(function() {
        braintree.setup('{{ $client_token }}', 'custom', { id:'form-add-card',
            onPaymentMethodReceived: function(data){
                console.log(data);
            }
        });
    });
    </script>

如果我尝试通过此表单通过网络添加信用卡,我将使用付款方式nonce并返回信用卡详细信息。但是,如果我使用safari,则无法添加信用卡,它会将空的付款方式nonce传入我的表单。这发生在chrome ios和safari中。 Android chrome和web chrome工作正常。

思想?

编辑: 尽管更新了braintree脚本,我仍然在Safari / ios设备中遇到同样的问题。 In my safari console, this is presented

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,请将此放在此处

我记录了我的服务器,发现表单已提交两次,第一次没有payment_method_nonce参数值,第二次是。在Safari和ios设备中,表单只提交一次空值,因此不允许通过braintree添加卡。解决这个问题,而不是:

        <div class="input-field col s12">
            <button class="waves-effect waves-light btn load">Save Card</button>
        </div>

我将其替换为:

        <div class="input-field col s12">
            <input class="waves-effect waves-light btn load" type="submit" id="submit" value="Save Card">
        </div>

它有效。