Braintree插件(卡和贝宝)+订阅(PHP)。 PaymentMethodNonce问题

时间:2019-01-21 18:16:57

标签: php paypal subscription braintree

我已经能够使用Braintree插入方法在服务器中创建测试结帐(js + php)。我需要为接受贝宝或信用卡的客户创建订阅。结帐(客户端)表单正在运行,我将其 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);
    });
  });
});
  1. 然后在目标页面中创建客户...
$payload_nonce = $_GET['payload_nonce'];

$result = Braintree_Customer::create(array(
          'firstName' => $name,
          'email' => $email,
          'company' => $company
      ));
  1. ...他的付款方式...
$resultPM = Braintree_PaymentMethod::create([
  'customerId' => $customerId,
  'paymentMethodNonce' => $payload_nonce
]);
  1. ...最后是订阅...
    $subscriptionData = array(
        'paymentMethodNonce' => $payload_nonce,
        'planId' => $billingplan
    );

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

在创建“客户”或创建具有相同结果的PaymentMethod等时,我试图添加paymentMethodNonce。

如果付款方式是“信用卡”,我可以像下面这样获得mayment方法令牌:

  

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

但是如果是PayPal,则没有信用卡[0]。哪种方法可以满足我的需求?

谢谢!

0 个答案:

没有答案