由于某种原因,某些参数(如金额和描述)不会从表单传递给控制器。
生成令牌并发送电子邮件,但不发送其他参数。
为了使付款工作,我必须在控制器上手动输入金额。
<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"
答案 0 :(得分:1)
嗯,是Stripe的支持人员(非常善良的人)给了我答案:
实际上,预计该金额不会随令牌一起发送到您的服务器。如果是这样,用户可以通过开发人员工具或编写javascript片段等轻松篡改它。通常,您希望某个地方的某些东西的价格(产品或您销售的任何产品)一旦收到令牌以获得权威价格,请再次查找。
但有时你会遇到用户以某种方式指定价格的情况,这是故意的。在这种情况下,我建议制作一个隐藏的表单元素:
然后使用回调使用JavaScript填充它。如果您正在使用Stripe.js,那么您已经拥有了一个可用于此的响应处理程序,只需在POST数据之前填充该字段即可。如果您正在使用Stripe Checkout,那么您可以使用自定义集成在处理程序上使用token
回调。