How to send payments from one PayPal Business account to another? - php

I've integrated the PayPal payment gateway, but now I need to know whether PayPal can handle the below scenario.
Let's say a customer pays $1000 which includes a non-refundable $100 application fee. Later the customer cancels and receives $800 as there is also a $10 cancellation fee, so the formula looks like:
$refund_amount($800) = $total_amount($1000) - $cancellation_charge($100) - $application_fee($100)
So now my business account has balance of $200 and I want to transfer cancellation_fee($100) to my service provider's PayPal account and want to keep application_fee($100) in my account. This transfer is the step I need help with.
Initially all payment has been received by the app owner account and later if the customer cancels or completes the booking amount must transfer to the provider's account (minus the $100 application fee)
I have gone through some PayPal API docs but was unable to find any solution for the transfer.
I'm using the paypal/rest-api-sdk-php library in Laravel.

For receiving payments, do not use the v1 PayPal-PHP-SDK; it is deprecated. Use the cureen v2 Checkout-PHP-SDK. Implement two routes on your server, one for "Set Up Transaction" and one for "Capture Transaction", documented here: https://developer.paypal.com/docs/checkout/reference/server-integration/
For the payer to give their approval, pair your two routes with: https://developer.paypal.com/demo/checkout/#/pattern/server
For automating sending payments from one of your accounts to another account, use the Payouts-PHP-SDK. The account sending payments will need to be approved for PayPal Payouts. See here regarding requesting approval: https://developer.paypal.com/docs/payouts/integrate/prerequisites/#get-access-to-paypal-payouts

Related

Marketplace using Paypal

Hi we are creating a mobile app for marketplace where we are hoping to get eBay model implemented. Where buyer will pay the seller and we will take our cut from the seller. We actually don't want to get payment ourself for the sale and handle the disputes for order shipping or chargebacks.
When a sale is done on our app, the buyer should send the payment to the sellers paypal and then Paypal will handle all the other stuff regarding that like disputes or chargebacks.
I want seller to link his paypal account to our app and we will take permissions for future payments and maintain a record where we can calculate his fee regarding sales made on our platform. Paypal Mobile SDK support this feature.
But my question here is how can we automate the original purchase process? One option is when a sale is done, we will send invoice from seller side to the buyer (possible using Paypal REST API) and open invoice pay link on the buyer side. Once the buyer pay the invoice and transfer the funds to the seller we will know that sale is approved successfully because as a Paypal facilitator we have access to that invoice (we actually sent that invoice to the buyer as we have permissions of invoicing of seller account).
But what if we don't want invoicing system? Can we implement anything where buyer will send the funds to the seller without generating an invoice from our app. Like when a sale initiated, we will present buyer a page where he will pay directly to the seller (without us involved) and we will track that transaction and make outstanding cut on that sale?
My Research so far
Payapl mobile SDK for iOS don't allow us to take permissions for invoicing, we can take single, future or profile sharing permissions in app
Paypal Rest API allow us to take permissions for invoicing but not for future payments (that is necessary to take our cut from the seller's account)
If we use Paypal Mobile SDK, we can take funds in our account but not directly to our sellers account
Adaptive payments is an option where can take funds from buyers and after deducting our cut send the rest to the buyer but in that case we will be primary recipient and seller will be secondary, being a primary recipient we are responsible for shipping the product which at this stage we don't want. Want want to be seller as primary recipient
Any help regarding our situation would be greatly appreciated. We just want to automate the system somehow with the APIs and SDKs without being the primary recipient. Please give us suggestion to make this a reality. Thanks
Using any other payment gateway like Stripe or Braintree will not help here because in that case we will be taking money as registered merchants. We would really like to work with Paypal for handling all order related stuff
The Express Checkout API supports Parallel Payments, in which case you specify the SELLERPAYPALACCOUNTID in the request. This is where the money for that particular payment would be sent.
You can use this functionality even with a single payment on the order, though. So you can just setup a single payment and include that SELLERPAYPALACCOUNTID parameter, and the money will go directly to that account.
When doing this you can use your own API credentials and no permissions or anything are required from the 3rd party account to send the funds directly to them.
This PayPal PHP SDK will make the Express Checkout API calls very quick and easy for you, so you could just setup some simple PHP services to hit from your mobile app(s).

How do large merchant resellers process payments and payouts?

I am looking for information on how large resellers collect payments and pay the people who sell on their site. (e.g. Redbubble.com, a company that pays artists a commission for their work)
Specifically, I am looking for different solutions that cover a few key functions at minimal cost (like Paypal fees)
Ability to take payment from credit cards and paypal (others a benefit)
Track sales for each merchant as payments are processing
Collect payments in central account
Payout all processed payments on a monthly basis
P.S. I imagine there are a few ways to do this, I am hoping to gain some insight on what solutions have been proven.
P.P.S. This is not a technology specific question. Whatever APIs or third party solutions you know of are fair game.
Thanks for your knowledge!
Try PayPal adaptive payments.
Paypal Adaptive payments
You can also try Stripe to collect funds to one account and to trasfer them to third party acccounts but this only works in the US.
Stripe Payments
You could use the Adaptive Payments API and that would allow you to split the payments up among multiple receivers in a single transaction in real-time. If you go that route the API calls that you'd be interested in are...
Pay - This setups the actual payment and the receivers on the payment.
SetPaymentOptions - This allows you to provide more details like items, shipping, etc.
ExecutePayment - This actually processes the payment in the system after it's been setup with the previous calls.
PaymentDetails - This obtains details about a completed transaction.
Preapproval (possibly) - This allows you to get a Preapproval key for a user that will allow you to trigger payments on that users behalf at any time in the future with the use of the preapproval key.
PreapprovalDetails (if you use preapprovals) - This obtains details about an active preapproval profile.
To get all of that working in the live environment you'll need to submit an application through your PayPal developer account to obtain a Classic API App ID. For development on the sandbox there is a global App ID that can be used.
Another option would be to take payments on your site using any PayPal product like Payments Standard, Express Checkout, Payments Pro, etc. and have all the money come to your account, and then use the Pay API to distribute those funds out to people accordingly. This could be automated with an IPN solution and possibly the use of a CRON job on your server.
This is the method I like to use, and I typically go with a full Payments Pro / Express Checkout integration for payments on my site and then I distribute via the Pay API within an IPN solution or CRON job like I mentioned.

IPN feedback for 2 people

I have a page on my site which sends out payments to more than 1 person. I've been testing this using the paypal sandbox account with a few test accounts.
I am also using ipn to get feedback from paypal when payments are complete, pending etc.
My question is, paypal sends me back info via ipn for just 1 of the payments. Why is that? When I check the payment amount in the ipn, it only shows me the payment for 1 of the people who got paid. For example:
If I pay person 1 and 2, where each person gets paid $10 each, so a total of $20. The ipn page only shows me the details for person 1 and says that the payment amount was $10, when the total payment amount is $20.
This is causing me a problem because I need to know that both payments were successful via ipn. At the moment I can only check the payment for 1 person at a time, even though I am paying 2 people at the same time.
How do I get payment for both people?
#Pete answer is a violation of the Paypal User Agreement (unless you have a separate legal entity for both accounts)
9. Restricted Activities
9.1 Restricted Activities. In connection with your use of our website, your Account, or the Services, or in the course of your interactions with PayPal, a User or a third party, you will not:
a. Breach this Agreement (including, without limitation, opening multiple PayPal accounts or breaching the Card Processing Agreement, the Acceptable Use Policy or any other agreement that you have entered into with PayPal (including a Policy));
What you are looking for is PayPal Adaptive Payments. A note about this though: one account - probably you as the application owner - must have a PayPal business account. The others that receive a payment only need a personal account.
PayPal provides an SDK with samples for the Adaptive Payments on Github. Select Adaptive Payments from the menu on the left. There are samples for multiple languages that should be able to get you started.
My hunch is that IPN is tied to the individual account, not the payment, and you have the IPN set up from just one of the accounts. I think what you need to do is configure the IPN on both accounts and then process the response from PayPal two times... once from the IPN notification of the first account, and once from the IPN notification of the second account.

Several questions about paypal pro subscriptions flow

I have integrated standard paypal with one of sites and it works as follows: user selects which subscription to buy, he is redirected to paypal, paypal sends IPN response, I process it and then every X days PayPal sends a new IPN notifying site that user has been successfully charged for new subscription iteration. Now the problem is that user needs to have paypal account to sign up for such subscription.
The customer contacted PayPal and found out that it is possible to avoid having user to use their PayPal account to buy subscription when seller uses paypal pro account. Is it really so? Will I be able to gather user's card info, then send some request to PayPal API and have the subscription created. If yes, what will happen next? PayPal will be sending me IPN requests every X days notifying site that the card has been successfully charged?
Also, what is the general flow? Do I always have to gather card info and send it to paypal api or can I redirect user to paypal in a similar way as standard paypal functions?
Yes, this is possible. You would need to sign up for PayPal Website Payments Pro and Direct Payment Recurring Payments. You can then use the CreateRecurringPaymentsProfile API and specify the card details directly in a single API call.
This will create a recurring profile, which is billed every X days / months, depending on what you specified as the billing period in CreateRecurringPaymentsProfile.
Alternatively, you can also sign up for PayPal Premium Services (for the UK) or PayPal Enhanced Recurring Payments (for the US). This allows you to accept subscription payments from guest users, using the exact same integration you have at the moment, except a 'guest payment' section will be added to the PayPal checkout screen, so buyers won't be forced to create a PayPal account to sign up for your subscriptions any longer.
(Note: Enhanced Recurring Payments / Premium Services has other benefits as well, such as Installment Plans, but guest subscription payments is definitely the biggest benefit).

Verify PayPal donation between two 3rd parties

I'm working on a project where users will be allowed to send donations among each other.
I'd like to integrate it with Paypal instead of reinventing the wheel and building my own donation system, but due to the nature of the system, I will need to verify that a donation of X dollars was sent from person A to person B.
Is this possible with Paypal, or am I out of luck?
You will need to look at PayPal Instant Payment Notifications (IPN).
Within the call to PayPal to handle the donation/payment, you can specify the URL for a "Listener", which is a script which will be contacted by PayPal with details on the payment, and can then authenticate that payment against PayPal to ensure that it is accurate/confirmed/not faked.
Within the data passed back to the Listener is the email addresses of the Payer and the Payee, along with the amount paid, fees charged, etc.
If you are acting as an intermediary to the two parties, and so long as the payment are made through the form/site you control, then you should be able to use the IPN to get details of those payments and then use that data however you wish to.

Categories