-
-
Notifications
You must be signed in to change notification settings - Fork 359
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
[Project] Enable new PayPal integration for all hosts #4210
Comments
@Betree I believe we also use this ConnectedAccount to decide if we want to display the adaptive method in the frontend or not. |
@kewitz Some hosts like https://opencollective.com/paris are still using it as their default, but yes I think we should figure out a migration path for them and make Payouts the new default (without removing adaptive yet). My understanding is that Payouts worked great so far (nice job implementing it!), has fewer fees, and is linked in the same way as the new PayPal payments integration - thus providing the feature at no additional cost. There's no emergency, but it would be great for us to figure that out in the next few months. |
Some feedback regarding payouts: The feature must be manually enabled for each PayPal account by contacting PayPal's support. Open Collective Paris started the process, but PayPal asked for additional documents and info that they didn't have the capacity to produce at that time. We're therefore back to the legacy adaptive integration for them. While I still think we should push for the new integration as default, we should also preserve the legacy adaptive one for now as a backup solution for hosts having troubles with PayPal. I'll try to better document this process of enabling PayPal payouts to make things easier in the future. |
We get a lot of requests to enable PayPal payments. We should iterate on this soon, as it generates some support. |
I forgot to push for this one in the new sprint but I'd love to prioritize it asap. We get a lot of support because of this issue, which takes engineering time and provides a slow experience for users. |
Adaptive payments are also marked as deprecated on PayPal documentation. |
This is a problem for our collective. We opted for an independent collective and the lack of paypal support for it is biting us hard as many of our supporters are European and do not wish to use credit cards. Based on the github tracker, 1-time paypal was launched more than a year ago And reoccurring paypal was launched almost a year ago now It feels like this should be live for everyone at this point. I dislike the feeling that I need to move our collective to the Open Source Fiscal Host to enjoy the benefits of Paypal. |
|
|
@DV8FromTheWorld Sorry for not replying sooner, we actually enable PayPal payments per host upon request - please contact support@opencollective.com and we'll activate it manually. |
Project update (2022-05-30)Identified challenges
Best solution for this problem: the ideal PayPal connect flow
UncertaintiesGiven the plan above, it's unclear at this point:
In order to solve these uncertain points, we want to have a quick experiment this week. We'll update the MVP below based on our findings. MVP
Context & followup issues
|
I just had a try with the "Login with PayPal" feature, which turned up to be unsuccessful because these tokens cannot be used to create an application (we need one to plug in the webhooks). Depending on what we do in the future, this could still be useful so I'm adding the code I used below. Get OAuth code: <script src="https://www.paypalobjects.com/js/external/api.js"></script>
React.useEffect(() => {
window.paypal.use(['login'], login => {
login.render({
appid: 'Ad5ki1-m_JgvB34NPkE64D8GXo4yRz_dQtZPxyGHNGoBBy90d9IIK-fI7i2S1AOdMSEpUfgIqQ3r5kc9',
authend: 'sandbox',
scopes: 'openid profile email https://uri.paypal.com/services/paypalattributes',
containerid: 'connect-paypal-container',
responseType: 'code',
locale: 'en-us',
theme: 'neutral',
buttonType: 'LWP',
buttonShape: 'pill',
buttonSize: 'lg',
fullPage: 'true',
returnurl: encodeURIComponent('https://opencollective.com/connected-accounts/paypal'),
});
});
}, []);
return <div id="connect-paypal-container" />; Exchange OAuth code for a token: const code = 'C21AAKTlK66mNF9utLMw5vsJHkXd9O_xT_MHYw7Ql11N12o-kbaVHCKXZ6VSL1Kzvqgtqqy95kebg7IeMDOcNYfyWcyqT08NQ';
const paypalClientId = 'Ad5ki1-m_JgvB34NPkE64D8GXo4yRz_dQtZPxyGHNGoBBy90d9IIK-fI7i2S1AOdMSEpUfgIqQ3r5kc9';
const paypalSecret = 'EHFmTPqC7YhvMchRU9qX89FDbXgif-lWLwJo5kr09CVGaGKRLzItK_Z_RmplGPHzlyhpOMkuTNOKazGG';
const response = await fetch('https://api-m.sandbox.paypal.com/v1/oauth2/token', {
method: 'POST',
body: `grant_type=authorization_code&code=${code}`,
headers: {
Authorization: `Basic ${btoa(`${paypalClientId}:${paypalSecret}`)}`,
'Content-Type': 'application/x-www-form-urlencoded',
},
});
const result = await response.json();
const token = result.access_token; Exploring an alternative: Multiparty paymentsWhile researching this I ended up on the documentation for multiparty payments. PayPal provides this API for marketplaces to onboard sellers and use their accounts to trigger payments. Multiparty payments can potentially solve our issues and beyond:
There are still two uncertainties with that feature:
|
@Betree I think the marketplace path is the right implementation for Open Collective. I think you're spot on the only caveat: Payouts. |
I contacted PayPal support with Inc's account through https://www.paypal-support.com/s/contactsupport?language=en_US to enquire about the Multiparty API and getting approved as a partner.
|
We are getting ALOT of requests for this atm. I probably sent about 6 to @SudharakaP today alone |
This issue is still a real pain point for ops/support, but we may solve it differently by limiting the PayPal feature to partner hosts only. It's an important discussion that I think should be on the table for the preparation of the next sprint. @SudharakaP For now, don't spend too much time on this; It's ok to enable by batch every two weeks, if not every month (unless it's an important account we want to onboard quickly). |
This is still coming up a lot - as a stopgap, could we add something in the app that makes it more clear that Host admins need to contact us to switch this on? To test, I just activated a brand new Host, and Paypal payouts is activated by default, and you can just click "connect paypal" on the host dashboard, with no information about what people need to do in order to use it. So it looks like it should just work, but people actually need to contact us. |
PayPal payouts and the upcoming PayPal subscriptions both use the new PayPal integration, based on connected accounts. Today, we need to set either
settings.features.paypalPayouts
orsettings.features.paypalDonations
to true to enable the connect form in their settings.Making that public would allow any host to quickly set up PayPal payments + PayPal payouts without having to contact us.
The main blocker right now is about invoicing: hosts with PayPal payments activated need to be invoiced for us to retrieve platform tips. @kewitz feel free to share if you see any other issue with this change.edit: solved with transaction settlementsThe text was updated successfully, but these errors were encountered: