使用JMSPaymentBundle支付条带"源参数是必需的"

时间:2017-09-24 02:35:32

标签: symfony stripe-payments symfony-2.8 jmspaymentpaypalbundle

我已经集成了JMSPaymentBundle,用paypal一切正常! 当我尝试使用此link for JMS条带进行更改时 并且使用来自github的ruudk/PaymentStripeBundle,它实际上是相同的。

但是有一件事。我收到此错误:源参数是必需的

在捆绑的问题中,我发现我必须使用条纹形式

<form action="" 
method="POST">
 <script
  src="https://checkout.stripe.com/checkout.js" class="stripe-button"
   data-key="MYPUBLISHEDKEY"
   data-amount="999"
   data-name="Demo Site"
   data-description="Widget"
   data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
   data-locale="auto">
 </script>
</form>

此表单生成令牌。我需要知道的是:

1- JMSPaymentBundle使用的已发布令牌的放置位置?

2-我应该在表格中采取什么行动?贝宝是否一样?

1 个答案:

答案 0 :(得分:0)

很难说这里发生了什么,但似乎https://github.com/ruudk/PaymentStripeBundle/缺少一些必要的文档。

据我所知,它为您的表单添加了token隐藏字段: https://github.com/ruudk/PaymentStripeBundle/blob/master/src/Form/CheckoutType.php#L12

但是,您正在使用的Checkout嵌入代码不会将令牌保存到该字段。我没有看到此库中嵌入任何其他Javascript,因此您需要使用自定义Stripe Checkout集成构建自己的Javascript:

https://stripe.com/docs/checkout#integration-custom

这样的事情应该有效:

var handler = StripeCheckout.configure({
  key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh',
  image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
  locale: 'auto',
  token: function(token) {
      // NOTE: assuming that the field injected by the library has an ID of "token"--you'll have to check your DOM and possibly adjust this
      var field = document.getElementById('token');
      field.value = token.id;

      // TODO: submit form and send to your backend
  }
});

document.getElementById('customButton').addEventListener('click', function(e) {
  // Open Checkout with further options:
  handler.open({
    name: 'Stripe.com',
    description: '2 widgets',
    zipCode: true,
    amount: 2000
  });
  e.preventDefault();
});

// Close Checkout on page navigation:
window.addEventListener('popstate', function() {
  handler.close();
});