Я разрабатываю собственный плагин для WooCommerce, используя viva payments
.Документация здесь.Это будет собственный плагин
https://github.com/VivaPayments/API
Проблема
В настоящее время мне нужно удалить сценарий wc-checkout
, чтобы заставить его работать
wp_dequeue_script( 'wc-checkout' );
Причиной исключения является то, что viva использует обработчик карт, а использование событий onblur делает запросы XHR в viva.Если посмотреть на вкладку сети, запрос XHR называется
https://demo.vivapayments.com/api/cards/installments?key=mykey
, а ответ - {"MaxInstallments":0}
Если я не запрашиваю сценарий, этот запрос не выполняется.Если запрос не был сделан, когда я пытаюсь получить токен, мне выдается сообщение об ошибке «Дата истечения не может быть проанализирована»
Вот jscode
function getToken(){
VivaPayments.cards.requestToken( function(){
});
}
function tokenMyFunction() {
VivaPayments.cards.requestToken( function(){
//do something?
});
}
$(document).ready(function (){
if (viva_params.testMode === '1'){
var url = "https://demo.vivapayments.com"
} else {
url = "https://www.vivapayments.com"
}
VivaPayments.cards.setup({
publicKey: viva_params.publishableKey,
baseURL: url,
cardTokenHandler: function (response) {
//console.log(response)
if (!response.Error) {
//console.log(response.Token)
$('#hidToken').val(response.Token);
return false;
}
else{
console.log(response);
alert(response.Error);
return false;
}
},
installmentsHandler: function (response) {
if (!response.Error) {
if (response.MaxInstallments == 0)
return;
$('#drpInstallments').show();
for(i=1; i<=response.MaxInstallments; i++){
$('#drpInstallments').append($("<option>").val(i).text(i));
}
}
else
alert(response.Error);
}
});
});
ВотVIVA JS с их сервера, который используется
https://demo.vivapayments.com/web/checkout/js
Вот форма
<form action="index.php" method="POST" id="payment-form">
<div class="form-row">
<label>
<span>Cardholder Name</span>
<input class="form-field" type="text" size="20" name=”txtCardHolder” autocomplete="off" data-vp="cardholder"/>
</label>
</div>
<div class="form-row">
<label>
<span>Card Number</span>
<input class="form-field" type="text" size="20" maxlength="16" name=”txtCardNumber” autocomplete="off" data-vp="cardnumber"/>
</label>
</div>
<div class="form-row">
<label>
<span>CVV</span>
<input class="form-field" type="text" name=”txtCVV” size="4" autocomplete="off" data-vp="cvv"/>
</label>
</div>
<div class="form-row">
<label>
<span>Expiration (MM/YYYY)</span>
<input type="text" size="2" class="form-field" name=”txtMonth” autocomplete="off" data-vp="month"/>
</label>
<span> / </span>
<input type="text" class="form-field" class="lukeexpiry" size="4" name=”txtYear” autocomplete="off" data-vp="year"/>
</div>
<div class="form-row">
<label>
<select id="drpInstallments" value="0" name="drpInstallments" style="display:none"></select>
</label>
</div>
<div class="form-row">
<button type="button" onclick="getToken()">Get Token</button>
</div>
<input type="hidden" name="OrderId" value="146228" /> <!--Custom Field-->
<input type="hidden" name="hidToken" id="hidToken" /> <!--Hidden Field to hold the Generated Token-->
</form>
Как я уже сказал:
- КогдаЯ снимаю с контроля wc-checkout, viva делает запрос в порядке на api / cards / взносы и, следовательно, впоследствии, когда я вызываю tokenMyFunction (), получает токен в порядке
- Если я не снимаю очередь, я получаю ошибку об истечении срока действия назапрос токена
Как я могу позволить viva по-прежнему делать запросы вместе со сценарием wc-checkout, или что, черт возьми, делает этот вызов рассрочки платежей?
Почему это влияет на запрос токена.Я нигде не вижу, чтобы ответ {"MaxInstallments":0}
использовался снова?
Любая предоставленная помощь приветствуется.