Braintree Drop-In (карты и PayPal) + подписки (PHP).Проблема с оплатойMethodNonce - PullRequest
0 голосов
/ 21 января 2019

Мне удалось создать тестовую выписку (js + php) на моем сервере, используя метод вставки Braintree.Мне нужно создать подписки для моих клиентов, принимающих PayPal или кредитные карты.Форма оформления заказа (на стороне клиента) работает, и я POST пересылаю ее на страницу php, где я получаю данные формы и создаю клиента, план и т. Д.

Однако у меня есть проблемыпри создании подписки.Я получаю Невозможно использовать paymentMethodNonce более одного раза или аналогичные ошибки.

Вот что я делаю:

  1. Форма оформления заказа (раскрывающийся) отправляет данные subscription.php? payload_nonce = tokencc_bc_s27k55_c7pcq8_8mvd43_xxcvvf_9p5
braintree.dropin.create({
  authorization: 'sandbox_6vqkmmsy_fs5432wttyb8qpzf',
  container: '#dropin-container',
  locale: 'es_ES',
  paypal: {
  flow: 'vault'
  }
}, function (createErr, instance) {
  button.addEventListener('click', function () {
    instance.requestPaymentMethod(function (err, payload) {
      // Submit payload.nonce to your server
      url = 'subscription.html?payload_nonce=' + payload.nonce;
      window.location.replace(url);
    });
  });
});
Затем на странице назначения я создаю Заказчика ...
$payload_nonce = $_GET['payload_nonce'];

$result = Braintree_Customer::create(array(
          'firstName' => $name,
          'email' => $email,
          'company' => $company
      ));
... его способ оплаты ...
$resultPM = Braintree_PaymentMethod::create([
  'customerId' => $customerId,
  'paymentMethodNonce' => $payload_nonce
]);
... и, наконец, подписка ...
    $subscriptionData = array(
        'paymentMethodNonce' => $payload_nonce,
        'planId' => $billingplan
    );

    $result = Braintree_Subscription::create($subscriptionData);

Я пытался добавить paymentMethodNonce при создании Customer или при создании paymentMethod и т. Д.. с теми же результатами.

Если в качестве способа оплаты используется «кредитная карта», я могу получить маркер метода оплаты, например:

'paymentMethodToken' => $ result-> customer-> creditCards [0] -> token

Но если это PayPal, то нет кредитных карт [0].Какой правильный метод для достижения того, что мне нужно?

Спасибо!

...