-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow reusing an existing customer through PerformsCharges::subscribe()
#218
Comments
That's not possible. The method already checks if the billable has a customer attached here:
So I don't see how it's possible Cashier attempts to create a customer twice for the same billable for you? |
Hello @driesvints, I'm sorry I haven't explained properly. I meant to say this instead:
In other words, this is how it can happen:
This can also happen if two separate applications using |
I'm afraid this is impossible. It's not possible to use Cashier Paddle with existing Paddle accounts and customers, only new ones. This is because there's no way from Paddle's side to retrieve a customer by email address.
This also is impossible to do. You should never try to use two Laravel apps with the same Paddle account. If there was a way from Paddle to retrieve customers by email address we could attempt to retrieve the customer before creating them and then sync them in through the |
I've tried explaining it here: laravel/docs#9189 |
Wait, apparently it is possible to search for a customer by email: laravel/docs#9189. I'll try to see what I can do here. |
There is no need to search the customer email by ID in this case, since the error message from Paddle itself returns the conflicting customer ID, and that can be passed on to the GetCustomer API, as I mentioned above.
The only issue that I see is the lack of separation of transactions would lead to notifications being sent through the webhook that are not relevant for one application. That discussion is for another issue though, and I could work around that by filtering the product IDs myself, in my own webhook handlers. |
Thanks. Continuing the discussion in #219 |
I've sent in a fix for this: #220 |
At present, calling
PerformsCharges::subscribe()
callsManagesCustomer::createAsCustomer()
to create a new customer entry in the Paddle account and create a new customer entry in Paddle.However, when the user already exists, the
ManagesCustomer::createAsCustomer()
method fails to create a customer with the same email address, throwing aPaddleException
.While this is an expected behavior from Paddle's end, this causes issues when there are multiple applications using the same Paddle account, or during development, when performing
php artisan migrate:fresh
followed by trying to register an already registered account triggers the condition.Therefore, I would like a modification to the current behavior, where, should a user already exist on Paddle's end, Paddle simply fetches the customer's information by using the GetCustomer API and registers it in the
customers
table.I can send in a PR for this feature, if interested.
The text was updated successfully, but these errors were encountered: