Is this compatible with PayumBundle ?
Closed this issue · 29 comments
Hello,
Is your plugin compatible with https://github.com/Payum/PayumBundle? I see they don't have any Stripe with sca currently, if yes, do you have some more detailed documentation?
Hi @jimiero,
This library can be use with payum/payum-bundle
check the bundle related to this library if you want to use it : https://github.com/Prometee/PayumStripeCheckoutSessionBundle.
payum/payum-bundle
is just an helper for payum/payum
to ease the integration with symfony.
Also into payum/payum
there is multiple packages, there is for example payum/core
and payum/stripe
. This last package payum/stripe
is not well updated and is not allowing (right now) to use "Stripe Checkout Session".
That's why I decided to make my own implementation of Stripe gateways and right now there is only one gateway available "Stripe Checkout Session" supporting :
- SCA (working since the creation of this library)
- subscription and card saving (working if you use
dev-master
of this library, will be released soon)
I'm also wanting to support "Stripe JS" shortly.
@jimiero it's just because 7.2 will fall into "end of life" in the end of the year, but I think the requirement could removed if tests are ok then.
I'll try to test https://github.com/Prometee/PayumStripeCheckoutSessionBundle will keep you updated, hopefully the documentation you have will help me the read the finish line :)
Thanks for your work btw!
Thanks 😉
Don't hesitate to post another issue if doc is not enough, the Payum doc is not very useful sometime so maybe I could help fill in the blank.
@jimiero I just test the removing of php minimum version requirement and add php 7.2 to the travis build, it could work with php 7.2 if you need to.
https://travis-ci.org/github/Prometee/PayumStripe/builds/680706058
I updated the README
on the bundle : https://github.com/Prometee/PayumStripeCheckoutSessionBundle
The url you set for the webhook won't work because it's a local one and also because I think you are using symfony and this Notify
url already exists, check my updated README
on the bundle to get what is wrong ;)
This bundle will work even if the webhook is not set, but for production env you will need it. If you want to capture webhook events en your local dev env you can install stripe cli
and then execute :
stripe login #only needed every 90days
stripe listen --events checkout.session.completed,payment_intent.canceled \
--forward-to https://my-local.com/payment/notify/unsafe/stripe_checkout_session
Replace the
--forward-to
argument value with the right one you need.
Doing this you won't have to create
Thanks the update, would it be possible to update the composer php version to ^7.2 as I have some others packages which require 7.2 :(
Or somehow to not force having php7.3 installed
Regards
@jimiero I just publish a new release with php min version removed and other stuff : https://github.com/Prometee/PayumStripe/releases/tag/v1.1.1
Thanks! I'll give a try and let you know how it goes.
Hello @Prometee I just tried to make a live payment with success, but here is an error in the logs, probably related with webhooks:
request.CRITICAL:` Uncaught PHP Exception Payum\Core\Exception\RequestNotSupportedException:
"Request ResolveWebhookEvent is not supported.
Make sure the gateway supports the requests and there is an action which supports this request (The method returns true).
There may be a bug, so look for a related issue on the issue tracker."
at vendor/payum/payum/src/Payum/Core/Exception/RequestNotSupportedException.php line 57
{"exception":"[object] (Payum\\Core\\Exception\\RequestNotSupportedException(code: 0): Request ResolveWebhookEvent is not supported.
Make sure the gateway supports the requests and there is an action which supports this request (The method returns true).
There may be a bug, so look for a related issue on the issue tracker.
at vendor/payum/payum/src/Payum/Core/Exception/RequestNotSupportedException.php:57)"} []
This means that an webhook event has been catched but no handler is there to consume it. Do you restrict the webhook key to the 2 events required ?
Are you sure that your gateway is named "stripe" ?
yes, but maybe I'm wrong
stripe:
factory: stripe_checkout_session
publishable_key: '%publishable_key%'
secret_key: '%stripe_secret_key%'
webhook_secret_keys: ['my-webhook-key']
Your gateway name is stripe
so your webhook url is ok. Can you check the logs of you Stripe account and check the failed webhook call or check the webhook logs ?
What to look exactly for, the webhook says
https://tools.ietf.org/html/rfc2616#section-10<title>An error occurred</title>500Internal Server Error
which is caused by that error I get on my site, the one mentioned about
I was talking about the Stripe logs on the Stripe website.
Edit your Stripe webhook and then you will see "Webhook attempts" list
here it is
"id": "evt_1GdXdPHQU2SYnXWXN9RYVMXV",
"object": "event",
"api_version": "2019-03-14",
"created": 1588234843,
"data": {
"object": {
"id": "cs_live_wbNF1RyQtoTnPhvE1IdXJvKYDdoZ6U9gRwx6prUkrw4arNXXXXXX",
"object": "checkout.session",
"billing_address_collection": null,
"cancel_url": "https://www.domain.com/payment/capture/GXpq7nhhqRVfp3jzBC9XiJr4PX0_M9HcpS1RKcY5G50",
"client_reference_id": null,
"customer": "cus_HBvXXXXXVpGaH",
"customer_email": "email@gmail.com",
"display_items": [
{
"amount": 595,
"currency": "eur",
"custom": {
"description": null,
"images": null,
"name": "Payment on Domain.com"
},
"quantity": 1,
"type": "custom"
}
],
"livemode": true,
"locale": null,
"metadata": {
"token_hash": "r4p5ZrBwqHmmvjs4vIWQefuBenJ9sk0T4Zjw-XXXXX"
},
"mode": "payment",
"payment_intent": "pi_1GdXcfHQU2SYnXWXgYXXXXX",
"payment_method_types": [
"card"
],
"setup_intent": null,
"shipping": null,
"shipping_address_collection": null,
"submit_type": null,
"subscription": null,
"success_url": "https://www.domain.com/payment/capture/GXpq7nhhqRVfp3jzBC9XiJr4PX0_M9HcpS1RKcY5G50"
}
},
"livemode": true,
"pending_webhooks": 1,
"request": {
"id": null,
"idempotency_key": null
},
"type": "checkout.session.completed"
}
All seems to be OK, so the log you show here is affected to the same webhook key you set in the config right ?
Because the error can only happen when the webhook content (this json you pasted) can't be identified by a signature checking using the webhook key and this json.
Yes it is.
It could be the fact that the required STRIPE_SIGNATURE
header is not accessible, are you using a proxy between Stripe and your server ?
This is how the webhook signature is checked : https://stripe.com/docs/webhooks/signatures
In this library the signature header is retrieved by this method
Not using a proxy, not sure what I can do.
Does this failing event brakes the sca of Stripe?
Not it won't affect at all the SCA flow, but the webhook is here to make a double check of the payment status.
@jimiero I push some updates to get more info about your signature error, if you want to get more details about it, add this line to your composer.json
(section require
) :
"prometee/payum-stripe": "dev-master",
Run a new test payment and then you will get more info on the reason of why the webhook can't be verified.