条纹Laravel没有从Checkout表格获得一些参数

时间:2014-10-14 14:41:56

标签: php laravel

由于某种原因,某些参数(如金额和描述)不会从表单传递给控制器​​。

生成令牌并发送电子邮件,但不发送其他参数。

为了使付款工作,我必须在控制器上手动输入金额。

<form action="checkout" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key= "pk_test_zOi8g9ztDo1HNeC6iFFTWqwk"
    data-amount="1500"
    data-name="Demo Site"
    data-description="2 shoes ($20.00)"
    data-image="/128x128.png">
  </script>
</form>

=====================================

 public function PostPaymentData(){


        Stripe::setApiKey('sk_test_CvCavCI3G4onNbKxZEaNzkvZ');

        // get the data submitted by the CHECK OUT Form

        $token  = Input::get('stripeToken');  (it gets it)
        $amount = Input::get('amount');      (it does not get it)
        $description = Input::get('description');(it does not get it)
        echo "the amount is . $amount";  //nothing
        echo "the description is  $description";    // nothing

        print_r(input::all());  // it just prints the token and the email 

      // create the charge on STRIPE servers. This will charge the credit card

      try {
            $charge = Stripe_Charge::create(array(
            "amount" => 1800, // amount in cents, again  (I have to enter it manually because $amount = ' ';
            "currency" => "usd",
            "card" => $token,
            "description" => "holycow@gmail.com")
              );
          }
        catch(Stripe_CardError $e) {
            // Since it's a decline, Stripe_CardError will be caught

            dd($e);

=============================================== ==

Route::get('payments/getpaymentpage', array(
    'as'=>'getpaymentpage',
    'uses'=>'StripePay@getPaymentPage'

));


Route::post('payments/checkout', array(
    'as'=>'checkout',
    'uses'=>'StripePay@PostPaymentData'

));

我的Stripe配置:

在提供者中:

'Abodeo\LaravelStripe\LaravelStripeServiceProvider'

在作曲家json中

"stripe/stripe-php": "1.*",
        "abodeo/laravel-stripe": "dev-master"

1 个答案:

答案 0 :(得分:1)

嗯,是Stripe的支持人员(非常善良的人)给了我答案:

实际上,预计该金额不会随令牌一起发送到您的服务器。如果是这样,用户可以通过开发人员工具或编写javascript片段等轻松篡改它。通常,您希望某个地方的某些东西的价格(产品或您销售的任何产品)一旦收到令牌以获得权威价格,请再次查找。

但有时你会遇到用户以某种方式指定价格的情况,这是故意的。在这种情况下,我建议制作一个隐藏的表单元素:

然后使用回调使用JavaScript填充它。如果您正在使用Stripe.js,那么您已经拥有了一个可用于此的响应处理程序,只需在POST数据之前填充该字段即可。如果您正在使用Stripe Checkout,那么您可以使用自定义集成在处理程序上使用token回调。