Симулятор оплаты Stripe Terminal [ошибка не является допустимой ByteString] - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь настроить считыватель карт для POS-платежей в моем приложении PHP с помощью терминала чередования (https://stripe.com/docs/terminal)

все идет хорошо, пока не будет вызван метод collectPaymentMethod. Ошибка возврата:

Ошибкавыполнить 'append' для 'Headers': значение не является допустимым ByteString.

Я пробовал много вещей для устранения неполадок, но не могу найти решение

Я пытался отладить с примерами приложенийпредоставлено Stripe. но не было никакого журнала. Я также попытался сгенерировать секрет клиента вручную и запустить collectPaymentMethod, но не работал.

function fetchConnectionToken() {
  // Your backend should call /v1/terminal/connection_tokens and return the JSON response from Stripe
  return fetch('/stripe/connection_tokens', { method: "POST" })
    .then(response => response.json())
    .then(data => data.secret);
}

function unexpectedDisconnect() {
  console.log("Disconnected from reader")
}

var terminal = StripeTerminal.create({
  onFetchConnectionToken: fetchConnectionToken,
  onUnexpectedReaderDisconnect: unexpectedDisconnect,
});

// Handler for a "Connect Reader" button
function connectReaderHandler() {
  const config = {simulated: true};
  terminal.discoverReaders(config).then(function(discoverResult) {
    if (discoverResult.error) {
      console.log('Failed to discover: ', discoverResult.error);
    } else if (discoverResult.discoveredReaders.length === 0) {
      console.log('No available readers.');
    } else {
      // Just select the first reader here.
      console.log(discoverResult);
      var selectedReader = discoverResult.discoveredReaders[0];

      terminal.connectReader(selectedReader).then(function(connectResult) {
        if (connectResult.error) {
          console.log('Failed to connect: ', connectResult.error);
        } else {
          console.log('Connected to reader: ', connectResult.reader.label);
        }
      });
    }
  });
}

function checkout() {
    var response = fetch('/stripe/paymentIntent').then(function(response) {
      return response.json();
    }).then(function(responseJson) {
        var clientSecret = responseJson.client_secret;

        // clientSecret is the client_secret from the PaymentIntent you created in Step 1.
        terminal.collectPaymentMethod(clientSecret).then(function(result) {
            console.log(result);
            if (result.error) {
                console.log('error')
              // Placeholder for handling result.error
            } else {
                // Placeholder for processing result.paymentIntent
                console.log('test')

                terminal.processPayment(paymentIntent).then(function(result) {
                  if (result.error) {
                    // Placeholder for handling result.error
                  } else if (result.paymentIntent) {
                    // Placeholder for notifying your backend to capture result.paymentIntent.id
                  }
                });
            }
        });
    });



}

:formatted:3094 Uncaught (in promise) TypeError: Failed to execute 'append' on 'Headers': Value is not a valid ByteString.
    at t.e.get (:formatted:3094)
    at t.loadResource (:formatted:3127)
    at t.<anonymous> (:formatted:3311)
    at :formatted:3264
    at Object.next (:formatted:3277)
    at c (:formatted:3165)
e.get @ :formatted:3094
t.loadResource @ :formatted:3127
(anonymous) @ :formatted:3311
(anonymous) @ :formatted:3264
(anonymous) @ :formatted:3277
c @ :formatted:3165
Promise.then (async)
(anonymous) @ :formatted:2872
e @ :formatted:2860
e.chainCancelable @ :formatted:2878
(anonymous) @ :formatted:3664
(anonymous) @ :formatted:3454
(anonymous) @ :formatted:3467
(anonymous) @ :formatted:3373
c @ :formatted:3352
e.collectPaymentMethod @ :formatted:3638
(anonymous) @ :formatted:442
(anonymous) @ :formatted:411
(anonymous) @ :formatted:359
(anonymous) @ :formatted:372
(anonymous) @ :formatted:278
i @ :formatted:257
u @ :formatted:405
n.value @ :formatted:441
(anonymous) @ :formatted:1019
(anonymous) @ 5:278
Promise.then (async)
checkout @ 5:274
(anonymous) @ VM4080:1
...