woocommerce / woocommerce-paypal-payments

https://wordpress.org/plugins/woocommerce-paypal-payments/
GNU General Public License v2.0
62 stars 47 forks source link

Vault: Checkout for new customer purchasing a subscription sends different customer ids #2050

Closed newlukai closed 8 months ago

newlukai commented 8 months ago

Describe the Bug

We are running PayPal Payments on our site to offer digital subscriptions for a web app to our customers. Usually these subscriptions come with a free trial period of one month. In order to allow recurring payments for the subscriptions we successfully applied for Vaulting at PayPal and run this setup since mid of last year.

Recently we updated to version 2.5.3 and now see that ~50% of the orders fail. The error message shown claims "No saved PayPal account.".

To Reproduce

Unfortunately, I don't know how to reproduce this. We did not find any common feature of the orders or subscriptions that failed.

Expected Behavior

PayPal Payment shall succeed.

Actual Behavior

PayPal Payment fails with "No saved PayPal account.".

Environment

Additional Details

In order to get a clue why things happen we inspected the plugin code and also added some loggings to run some tests. We found that the response of the PayPal request sent in for_user (PaymentTokenEndpoint.php) at first contains a customer_id like WC-abc0123def012. A minute later in the same checkout process this request is sent again, but the response then contains a customerId like WC-1234.

While the first response contains an entry in the payment_tokens array, the second one contains an empty payment_tokens array.

Of course, this might be a wild guess since I'm absolutely not familiar with the code base. I have the impression that the ppcp_guest_customer_id which is created using uniqid is somehow lost through processing and thus the plugin uses the WordPress user id to request the payment tokens from PayPal.

SydeKrystian commented 8 months ago

Hello @newlukai,  Thanks for reaching out to us.

It seems that your GitHub issue is primarily a support request. While we value your input and feedback, GitHub is predominantly used for our development activities. For a prompt and detailed response, we kindly ask that you reach out directly to our support team.

When you contact our support team, please include a copy of your WooComnmerce system report. This will help us get to the bottom of your issue more quickly. Additionally, it would be beneficial if you could provide a more detailed description of the problem, as the information shared here is a bit ambiguous.

We'll be closing this GitHub issue for now. However, once you reach out to our support team, rest assured they'll be ready to assist you with your concerns. Thank you for your understanding!

Kind regards, Krystian

newlukai commented 8 months ago

@InpsydeKrystian Got this. Thanks for consideration. I'm quite desperate since the support team does not respond so far and I'm not able to check the state of my request anywhere – I'm damned to wait for a response while having a severe issue on my productive system.

Anyways, I would be glad if you could take two minutes hitting me in the right direction regarding the following: The PayPal Buyer accounts linked to these failed orders seem to be saved in our Seller PayPal Vault. The payment methods page in the account of the affected users does not list any payment method, but trying to add the PayPal account again leads to some "your account is already connected" message. Do you, by any chance, know how to disconnect these accounts from the Vault again? Additionally: I consider the empty list of payment methods a bug. What do you think?

SydeKrystian commented 8 months ago

Hello @newlukai

The plugin does not generate the customer_id anymore when using Vault v3 as PayPal generates it and returns it after the payment. If the payment method was previously saved using Vault v2, PayPal would still return the old customer_id after the payment.

For assistance, we need further details like a system report to move on with this one. Please directly reach out to our support.

Kind regards, Krystian