Closed paulmendrik closed 1 year ago
I'm getting the same error using the default Commerce templates, specifically: build/shop/checkout/payment.twig.
With the aforementioned default payment.twig
form, the following error occurs with "Dummy" gateway as well as "Commerce Stripe" gateway:
HTTP 400 – Bad Request – yii\web\BadRequestHttpException
Request contained an invalid body param
yii\web\BadRequestHttpException: Request contained an invalid body param in /var/www/html/vendor/craftcms/cms/src/web/Request.php:934 Stack trace: #0 /var/www/html/vendor/craftcms/commerce/src/controllers/PaymentsController.php(352): craft\web\Request->getValidatedBodyParam('redirect') #1 [internal function]: craft\commerce\controllers\PaymentsController->actionPay() #2 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) #3 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(181): yii\base\InlineAction->runWithParams(Array) #4 /var/www/html/vendor/craftcms/cms/src/web/Controller.php(190): yii\base\Controller->runAction('pay', Array) #5 /var/www/html/vendor/yiisoft/yii2/base/Module.php(534): craft\web\Controller->runAction('pay', Array) #6 /var/www/html/vendor/craftcms/cms/src/web/Application.php(279): yii\base\Module->runAction('commerce/paymen...', Array) #7 /var/www/html/vendor/craftcms/cms/src/web/Application.php(582): craft\web\Application->runAction('commerce/paymen...', Array) #8 /var/www/html/vendor/craftcms/cms/src/web/Application.php(258): craft\web\Application->_processActionRequest(Object(craft\web\Request)) #9 /var/www/html/vendor/yiisoft/yii2/base/Application.php(392): craft\web\Application->handleRequest(Object(craft\web\Request)) #10 /var/www/html/web/index.php(21): yii\base\Application->run() #11 {main}
action "commerce/payments/pay" redirect "768c85bdff99460d1be190a42cb116f4c0696be30cf3261b15c0a6cb93175458//kiwi-shop.ddev.site:3000/shop/customer/order?number=7623c8e3dfdec4431060a348f078030f&success=true" cancelUrl "9e6bafc76d62bba91db76ea7dc65edd61b5a61366b7951debab5afdb6f9d0325//kiwi-shop.ddev.site:3000/shop/checkout/payment" orderEmail "jenny@andrews.net" CRAFT_CSRF_TOKEN "VMjPq-725MKsLFIKTWtNhPXaq47qhsLzK9k5kNktCosRkiCDgeRAMjmXh-2Lt770_GlkcyIyBce2su_DvtCRqVuYe8-UYmLGc81X9_enA3c=" gatewayId "1" firstName "Jenny" lastName "Andrews" number "4242424242424242" expiry "01/2023" cvv "123" registerUserOnOrderComplete ""
However, rewriting the payment.twig
form according to the latest docs does work ("Commerce Stripe" gateway):
<form method="post">
{{ csrfInput() }}
{{ actionInput('commerce/payments/pay') }}
{{ redirectInput('/shop/customer/order?number={number}') }}
{{ hiddenInput('cancelUrl', '/commerce/checkout/payment'|hash) }}
{{ cart.gateway.getPaymentFormHtml({})|raw }}
<button type="submit">Pay Now</button>
</form>
For now, I'm just using the form in the docs, but it'd be nice to solve any problems with the default templates form. Let me know if any more info is required for debugging.
OS version Linux 5.10.25-linuxkit (DDEV) PHP 8.0.3 • MySQL 5.5.5 Craft CMS 3.6.13 • Craft Commerce 3.3.1 • Stripe for Craft Commerce 2.3.2.1
Updating to Commerce 3 latest example templates should resolve this issue.
I have an issue which after updating to Craft 3.5. The Craft Commerce Stripe plugin was working fine before the update but now I'm getting a HTTP 400 Bad Request , Request contains invalid body param. I'm using the following to create the payment form:
Finally checking the logs in stripe it gives a 200 O.K. without finalising the payment.
Any ideas ?