Verify PayPal donation between two 3rd parties - php

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.

Related

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

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

Logging PayPal payments in application

I have several ambiguities in using paypal methods and cases, when IPN messages are sent. Im developing app, in which im using paypal(sandbox) for making deposits and cashouts. Each of these both transactions I want to log in my app and here some obscurity raises becouse I need to capture as many cases that may occur. So I'll take it gradually and I'll be thankful also for each partial response.
Firstly, I have some general questions:
In my app, im using BuyNow button, AdaptivePayment methods PAY and PaymentDetails and Merchant method GetTransactionDetails. Are these methods part of Bussines account and for free (there are no monthly fees) right? I cant afford to pay some monthly fees from begining.
May arise any problems, when i'll deploy it to non-sanbox environment?
cashout
For cashout Im using Adaptive payment PAY method.
When My app client make a cashout to his/her paypal account, I can catch through IPN message, that payment is completed and using AdaptivePayment PaymentDetails method and Merchant GetTransactionDetails method I can find out, that there is pending status with paymentreview reason. So on receiver side, where I dont have access, is payment review possibility. Thus receiver can DENY payment and here is a question, how to get information about this user action, becouse an IPN message doesn't come.
Another case that im facing is when client of my app make cashout to
his/her bussines paypal account with different currency from sender
(my bussines paypal account). There is pending status too, but with
reason "multicurrency" in IPN message. Here is similar problem to
previous point 1)... again, I cant get IPN message, which
determine, if user accepted or not the transacion.
deposit
For deposit Im using PayPal standard Buy now button.
PAYER SIDE(my app client): I dont understand, why there is payment
review (accept/deny) in payer account profile, when status of
payment is completed? Is it common behavior only in sandbox
environment? Or is it possible accept/deny payment on payer side in
non-sandbox?
RECEIVER SIDE(my bussines paypal account): There is payment review
too, on receiver side, and if im right, these links (accept/deny)
are similar to links on payer side, arent? There is refund
posibility too, exists some API method to refund programatically?
Correct, each of the products you mentioned do not have a monthly fee.
If a user accepts or denies a pending payment that would trigger another IPN with the completed status. Are you saying you've tested this specifically and you're seeing otherwise?
Receivers would only have to accept/deny in cases where there is currency conversion or maybe they have fraud filters set to flag specific transactions, etc. In most cases there should be no review necessary.

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.

PHP: PayPal Integration

im building a site where 2 user groups exist: sellers and buyers. The buyers buy stuff and should pay to the sellers via PayPal.
So, its not a kind of a web shop where users are paying directly to me ( as a website owner/online shop), BUT TO THE OTHER USERS (sellers). So i need to forward a PayPal transaction from one user on my site (buyer) to the other one (seller).
I read some PayPal API Descriptions, but its assumed there that i want to process the PayPal Payments to my PayPal account, what's not my case.
An idea would be that sellers pay to me, and i then pay to buyers, but that's not what i want to do.
So , what I want is: the buyer should process the PayPal payment directly to the seller's PayPal account, and i should then receive the payment confirmation and inform the seller about it.
Does anyone have an idea, expirience or suggestion with this stuff? Thanks in advance!
You have a lot of options for how you can handle that.
One, you could use the Express Checkout API to build the checkout system, and you'd use the Permissions API (optional) so that users can easily grant your application permissions to make API calls on their behalf. Note that users could also do this manually through their PayPal profile until you get the Permissions part integrated.
To get your payments, you could have your users create a preapproval profile using the Preapproval API. This will allow you to submit payments on their behalf automatically at any time. As such, you could use the preapproval key within Pay calls directly in the checkout flow or within IPN (which is what I would recommend) to submit payments to yourself from the user's account.
Another option is to use a parallel payment within Express Checkout. This would handle splitting the payment for you automatically between the seller and yourself, but the buyer would see that split during checkout.
Another option would be to use the Pay API for the checkout which would allow you to create a chained payment. This is the same as a parallel payment except that it hides the split from the buyer, and you could actually delay the payment to secondary receivers if you need to for any reason.
Hope that helps.
if you have a buy now button or similar, use the sellers' email address as below
<input type="hidden" name="business" value="sellers#email.com">
and it will pay the user with that email address. If that's not their paypal address, it will prompt them to either sign up for paypal to receive or add it to a current account.
Then use PHP mail() or your CMS/Admin system to notify you when the successful payment page has been loaded after a referral back from Paypal.

Make a payment into someones paypal account using PHP

I have a website where I need to reward users for their involvement by paying money into their paypal account. I have a paypal business account, and would like to know if it is possible to put money into their account automatically from just having their paypal account email address.
I am developing my website using php. Ideally, I would like to have a script on my server that when executed transfers money from my business account into their paypal account.
I am new to paypal, and having looked around I am getting confused as to all of the different APIs that are in use! MassPay keeps coming up but if possible I would rather I didnt have to pay the 2% charge on each payment - is there any other options?
The payments are not for goods or services and so could be classed as a personal transfer, would this eliminate any fees?
So my questions are:
1) Is this possible?
2) Which API is most suitable?
Thanks
Yes, it's possible but you're going to end up paying a transaction fee. I would recommend you do a batch process (that is, do one large payment request scheduled at a certain time of day) through PayPal's Mass Payment API.
You can read more about this API and how to use it here.
The way PayPal stays in business is by collecting these transaction fees. If it didn't collect them, it wouldn't be nearly as successful.
If you're looking at having more options on the transaction, including some ways to try and shift around who pays the fee, you may want to look at Adaptive Payments.
The best way is to generate a paypal button in the following URL:
https://www.paypal.com/us/cgi-bin/?cmd=_donate-intro-outside
and place it at your page... You'll still have to pay some fee (although it's a low one)

Categories