payment_method_nonce возвращает пустую строку в PHP - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать простую транзакцию, используя Braintree в режиме песочницы.Это требует, чтобы я сделал метод запроса POST со страницы, чтобы продолжить делать транзакцию.Тем не менее, документы разработчика не сообщают, что мне делать дальше после успешного рендеринга интерфейса ввода.

Из того, что я знаю, для успешного выполнения запроса POST входные данные должны иметь "атрибут name в своем HTML-коде.По логике он должен иметь имя «payload_method_nonce» в одном из входов.Но поскольку его там нет, некоторые пользователи предложили добавить код, подобный этому:

<input type="hidden" name="payment_method_nonce">

, чтобы сделать это в PHP:

$nonceFromTheClient = $_POST["payment_method_nonce"]

и добавить эти несколько строк:код:

var form = document.querySelector('#payment_form');
form.addEventListener('submit', function (event) {
event.preventDefault();
hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {
document.querySelector('input[name="payment_method_nonce"]').value = 
payload.nonce;
  form.submit();
});
}, false);

Я уже сделал это, но он по-прежнему ничего не возвращает.

Что мне делать?

Полные коды:

HTML

<form id="payment-form">
<div id="dropin-container"></div>
      <input type="hidden" name="payment_method_nonce">
      <button id="submit-button" class="w3-theme-action submit-btn" 
style="width: 27.5%; margin-bottom: 16px; margin-left: 0;">Request 
payment method</button>
</form>
<script>
var button = document.querySelector('#submit-button');

braintree.dropin.create({
  authorization: 'xxxxxx',
  container: '#dropin-container'
}, function (createErr, instance) {
  button.addEventListener('click', function () {
    instance.requestPaymentMethod(function (err, payload) {
      // Submit payload.nonce to your server
var form = document.querySelector('#payment_form');
form.addEventListener('submit', function (event) {
event.preventDefault();
hostedFieldsInstance.tokenize(function (tokenizeErr, payload) {
  document.querySelector('input[name="payment_method_nonce"]').value = 
payload.nonce;
  form.submit();
});
}, false);
    });
  });
});
</script>

PHP

$nonceFromTheClient = $_POST["payment_method_nonce"]
echo $nonceFromTheClient;

1 Ответ

0 голосов
/ 11 июня 2019

Метод по умолчанию для формы HTML: GET.

. Измените метод формы:

<form id="payment-form" method="POST"> ... </form>

Или получите доступ к своим данным в $_GET:

$nonceFromTheClient = $_GET["payment_method_nonce"];
...