I am using PayPal Adaptive Payments in the Classic API (Java).
If I get a Preapproval on a transaction, does that in fact guarantee the funds will be available at the later date? Or does it just give me the ability to attempt capture at a later date? i.e. am I in danger of not being able to collect the funds at the later date?
It does NOT guarantee the funds will be available. It simply provides you with the ability to attempt a transaction on behalf of the 3rd party without further approval, but if their funding source(s) fail then the payment will indeed fail.
Related
I am beating my head against the wall with this one. I am setting up a payment using the PayPal Adaptive Payments API, where one of my platform's users receives a payment from their customer. I need to be able to see the amount of the PayPal fee related to that transaction.
I'm familiar with and have tried using the PaymentDetails API operation, but unfortunately, the only quasi-relevant information that method (and the IPN) returns is fees_payer (who paid the fees), not the amount of the fee.
I've also looked into the GetTransactionDetails operation, but that appears to be only for Express Checkout and Website Payments Pro APIs, according to this document.
Any ideas how I can determine the fee amount on these transactions?
With Adaptive Payments the IPNNotificationURL specified in the Pay request would be an app specific IPN that won't provide much info about that payment itself.
If you setup IPN in the receiver account profile, then an additional IPN would be triggered that would be transaction specific and would include the fee.
As title,
Is it able to change the secondary receiver? I am the primary receiver, i am intend to use delayed adaptive payment for my system, the thing is , before i want to release the payment, the secondary receiver might be happen doesn't complete the job i specified, another secondary receiver might completed the job, but i am intend to change the secondary receiver so the secondary receiver which doesn't complete the job cannot receive the money. Am i able to change the secondary receiver?
Nope. It is not allowed to change it.
Within 90 days, you are able to release the money until all the receivers have performed some actions, the money will be credited to all the secondary receivers together.
You will not be able to change the secondary receiver email in ExecutePaymentAPI as it takes only payKey as parameter.
The delayed chain payment expires after 90 days, if you fail to call the ExecutePayment API the transaction expires.
As a side note from personal experience: If you try using Express Checkout and then MassPay, PayPal will not approve your business application because, and I quote, "They don't have visibility of initial payments". The only option is to use Chained Payments or Parallel Payments.
I had Express Checkout and Implicit Adaptive Payments set and my business application was denied. So I suggest you stick to using chained payments.
https://developer.paypal.com/docs/classic/adaptive-payments/integration-guide/APIntro/
Once the secondary receiver is set in the PAY API, it is not possible to be changed later. To fulfill your requirement , I hereby suggest you firstly collecting the full funds from the payer, via PayPal's Adaptive Payment or Express Checkout. And then call MassPay API to send funds to your secondary receivers. Please refer to below page for more details about MassPay API.
https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/MassPay_API_Operation_NVP/
Please also be noted that MassPay is a feature that needs to be requested access to and approved. Please use below links to contact PayPal's Customer Service teams to request this feature.
http://www.paypal.com/cgi-bin/webscr?cmd=_contact-general
http://www.paypal.com/cgi-bin/webscr?cmd=_contact-phone
I am looking for alternatives to stripe's per-user pricing subscription : I need :
to charge my user a recurring payment which depends on the number of user accounts he has
to be able to change the number of users via an API, with customer validation is ok, but ideally without changing a plan nor creating a new type of plan. Check status, cancel, etc. via the API too.
Ideally with no up-front charge = fee + percentage of transaction
I found out that stripe might be a good option (see per-user pricing here https://stripe.com/docs/subscriptions) and unfortunately Paypal does not seem to offer this kind of feature (plans can only be increased by 20% each 180 days or you need to cancel previous profile and create a new one). Or am I mistaking about Paypal ?
What alternatives would exist for such needs?
What you want are Reference Transactions, in which case you run an original authorization or sale transaction, and then in the future you'd run DoReferenceTransaction with the original transaction ID and any new amount you need to process. It will process immediately without any redirection or additional authorization required at that point.
If you use reference transactions with Payments Pro (direct credit cards) then all you need to do is save the original auth or sale transaction ID to your database so that you can pull it out for the user when you need to process a future payment using DoReferenceTransaction.
For PayPal payments you'll use Express Checkout w/ Billing Agreements, which will give you back a billing agreement ID. In that case, the billing agreement ID is what you'd pass into future calls to DoReferenceTransaction.
In either case you'll need to build your own system to lookup payments that need to be processed each day and loop through them making a call to DoReferenceTransaction for each one.
Is there any need to use IPN with
1. EXPRESSCHECKOUT (SETEXPRESSCHECKOUT => DOEXPRESSCHECKOUT)
2. RECURRING PAYMENT (SUBSCRIPTION)
It depends on how you operate your business...
If you ship physical goods, then, of course a human will check if you received a payment before you send the goods to the customer...
But with digital goods it's another story, you want to deliver the digital content as soon as you get the payment in your account. That's the main usage for IPN. If you get the IPN confirmation, you fire an email with a download link directly to the customer's email.
Other use cases would be, automate tasks, like accounting, mailing, renewing subscription status, reverting all you need to revert in case you get a payment cancelled notification, etc.
Yes, IPN can be very useful with any PayPal transactions. It is simply a POST of transaction data sent to your listener script on your server. This script receives the data and can process it however you wish, which allows you to automate tasks like updating databases, sending custom email notifications, hitting 3rd party web services, etc.
IPN works with all transactions once you have it configured, so you can use it to process payments, refunds, disputes, cleared e-checks, subscription payments, canceled profiles, suspended profiles, etc.
Whether or not you need to utilize it is up to you and your project requirements, but it is indeed very useful for Express Checkout, Subscriptions, and any other transaction types.
I am using PayPal PreApproved payments for my crowd funding website, where project backers are only charged if the project is successfully backed.
I am worried that high rate of payments will fail when the PayPal API tries to collect the funds when a project is successful:
a backer might not have any funds in their PayPal account
a backer might close their account once the project is successful (to intentionally stop payment)
a backer might remove/cancel their preapproved payment
etc...
There are a number of ways that the payment could fail which would mean that the project owner would not get their funds.
Can anyone suggest a way of tightening or securing payments. Please note, that PayPal will only allow you to use PreApproved payments for crowdfunding. Please also note that project owners need to be able to receive the funds from my site. Sometimes, these funds can be as small as $10 or up to $10,000 so we need to use PayPal to pay them as there is not other method of getting the funds to the project owner
I've implemented Paypal Adaptive payments and used them for payments at http://www.wethetrees.com and we had the exact problems you are describing. The capture rate is almost random, we were down to 35% with one campaign and had to manually send all backers invoices.
When capturing we had backers with closed/unauthorized accounts, insufficient funds, unavailable payment methods etc. We switched to just doing direct capture for a while, which is great since we get 100% of all pledges, but Paypal closed our account without notice when one of our campaigns mentioned the word "Cuba".
The solution in the end was to scrap Paypal so now we're using Wepay and Dwolla, and we're considering Bitpay (Bitcoin) as well. Seems to like Paypal wants to kill crowdfunding or doesn't understand it. Anything less than a 90% capture rate is totally unacceptable and will cause projects to fail.
Preapproval isn't the only thing they'll allow you to use. That's just one part of the Adaptive Payments API, but you could go with a delayed chained payment, too.
This way your account can be treated sort of like an Escrow. You can use the Pay API to create payments in the system that are split between receivers accordingly. Only the primary receiver would get paid at first, though, and then you can call ExecutePayment to submit the secondary payments from the primary account within 90 days.
This way the primary account holds all of the funds so they're available to pay out when the goal is reached. If the goal is not reached the payments could be refunded.