我在视图文件中添加了以下刀片代码,用于通过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工作正常。
思想?
答案 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>
它有效。