Booking system to take a deposit and then final amount at a later date - paypal

This is more of a question regarding flow than code.
I'm currently working on a booking website for a holiday home. I've implemented a booking system which currently takes full payment at the time of booking. This uses PayPal REST API. It works fine no problems code-wise.
However my client would like the system to take a deposit when booking (20%) of the total. Then take the remaining amount later on (through the site). This seems strange to me and I've never used a website which does this so I'm not sure what the flow should be.
The only way I can think of achieving this is that the user has to come to the website at some point in the future to pay the remaining amount. I could send them email reminders but it seems a bit awkward to do that.
Has anyone done anything like this in the past?

In order to take the money later, you need to store the credit card data in your system, which is not quite legal unless you are authorized payment service provider (and I'm almost sure you're not).
We have the same case in our reservation system. Generally, you'd allow credit card payment only for deposit, and later final amount is paid via bank transfer or cash, for example, and has to be settled manually by an operator.
Your idea is not bad, however. You could inform the user about the final amount and due date in the booking confirmation email and later on send them reminders.

You can utilize reference transactions to handle this without storing/saving any billing information on your server.
Reference transactions can be used in Express Checkout as well as with Payments Pro.
Basically, the way it'll work is that you can process the original 20% and then you'll save that transaction ID in your database. Once you're ready to process the remaining amount you just make a call to DoReferenceTransaction and supply the original transaction ID along with the new amount to charge. PayPal will then charge this new amount using the billing information that they have saved on their server.

Related

Is it possible to block an amount in Paypal like a credit card

I am starting a business and I would like to offer Paypal as a payment option, but for my business it is essential to be able to block an amount of money, just like a car rental or a hotel does on a credit card. Would it be possible to block an amount from my users PayPal account and release it or book it for good later?
My business is of course an online service, and I want to do this pragmatically in a Spring based application.
I think what you are looking for is Authorization and capture.
I haven't used that feature from Paypal, but have used it elsewhere. What you are looking for is usually called card authorization, preauthorization, or preauth.
Yes it's possible
PayPal's REST API offer 3 primary ways to ensure you paid for product/services that you give to your customers
sale. Makes an immediate payment so you get paid immediately
authorize. Authorizes a payment for capture later.(this is what you see in a car rental or hotel)
https://developer.paypal.com/docs/integration/direct/payments/authorize-and-capture-payments/
order. Creates an order. - which gives you the flexibility to
multiple to do multiple authorizations and captures (these are for
complex use cases such as when you buy a computer from Dell you would
be authorized for the desktop, monitor, keyboard at different points
of time based on availability and then the funds captured when they
are shipped)

Create/UpdateRecurringPaymentsProfile - can clients use their PPal Accounts

I have looked around SO for this but I can't seem to find anything like it.
On my service, I wish to charge on a per-month basis depending on how many users my clients have.
So this question is split up into two parts.
What I want to know is it possible for a client to use their own paypal account (without entering any CC details) with conjunction with CreateRecurringPaymentsProfile via the NVP, I have looked through the documentation and can not discern anything. So clearly it is not possible to do it via NPV - From what I've seen so far.
i. If I do an Express-Checkout Subscription, I can do 20% change on total amount every 180 days (I DO NOT want to do this) - I want to be able to get the Profile via the IPN and then modify the monthly amount on as-need basis
ii. There was some mention of Referenced Transactions, but the Documentation is very confusing.
So say there is a way to create a recurring payment subscription via a PayPal Account on the PayPal website, next step is to be able to update the Subscription via UpdateRecurringPaymentsProfile NVP command.
While I am happy to pass on CC details (which already works great), I am just wondering if it is indeed possible create a button, which would create a Subscription - once on success an IPN request is sent back with the ProfileID which I can modify the Billing Amount by NVP.
So TL;DR;
The current flow I have
Register on our website
Enter CC Details
Backend submits the data to PayPal and if passed - continues on.
On any Account modifications, update Profile Monthly Amount Automatically.
The flow I want
Register on website
Click on an Authorize Button Redirected to PayPal
Login to their PayPal Account Create Recurring Profile.
On any Account modifications, update that Profile Monthly Amount Automatically.
edit to add - this is all working now, had to contact and harass PayPal directly for a lonngg time.
I'm a little confused because it sounds like you answered your own question, but then said that's not what you want..??
Express Checkout does exactly what you outlined at the end of your post, and it triggers an IPN just like any other PayPal transaction. You are indeed limited on how much you can adjust the amounts of profiles created with EC, though, just like you mentioned with the 20% every 180 days. If you create profiles with Payments Pro (DoDirectPayment or PayFlow) then you're not limited and you can adjust the amounts however much you need to whenever you need to.
Reference Transactions and Preapprovals may be something to look into as well. I actually wrote an article about what they are and how they differ from each other awhile back that you might be interested in.

How to get Credit Card Balance?

Is there ability to get in some way Balance on CreditCard ?
API of Authorize.net or Paypal were examined on this subject and no results.
In real life any cash terminal can show to you balance on your credit card. That is why I assume there is some way to get this balance in web through some payment gateway.
Thanks in advance for answers!
I've dealt with many credit card processing APIs and unless it is an API for a gateway solution, they generally do not have methods to do much in the way of querying for information. You might see some capability (again, in a gateway API but not in a lower-level processor's API) to load details of the original transaction, but not much else.
This makes sense in terms of supporting high volume transactions. I visited FDMS once and talked to them a bit about their architecture. To maintain a > 1k TPS processing capability, they can't even wait for database writes when you're authorizing. That authorization code you get back is assigned from a pre-determined pool. The data about the transaction is pushed off to another process for persisting to a large back end system for later settlement. This is why many of the non-gateways have rules about waiting x minutes before trying to settle; the data isn't in the settlement system for a bit after authorization. This is also the reason why the authorization code expires after a while - they re-use it. (Someone got the bright idea that they'd charge you extra for letting the auth code expire.....probably due to the increased load of data they need to store in the settlement system waiting for these things to time out.)
Checking a credit balance is also not part of a normal credit card processing workflow. Mostly you attempt to authorize and get one of 3 results: a hard decline, a soft decline, or an authorization. A balance check isn't really needed, and would probably open up some privacy or security issues if it were available.
Cash cards (like pre-loaded Visas) use a different administrative activiation and management API. Gift cards work the same way, and you can use that administrative API to get balances. This is a special case because these technically aren't credit cards.
I've not dealt much with the back end settlement networks that the issuing banks and the acquiring banks use to transfer data during settlement. To get this kind of info, you'd have to have access to this network. You might want to check the "any cash terminal will give you a balance" statement a bit. It would make sense that you could get your balance from an issuing bank's ATM, but try to do it on one of those third-party type machines you find in gas stations that is not from your issuing bank to see if it works. If you use a true credit card (not a debit card - that is a different network entirely), I don't know that it will show you your balance.
The only thing that I can think of is to use the AuthOnly method and try running (and voiding) multiple transactions, incrementing the PaymentAmount values until it fails.
Is there ability to get in some way Balance on CreditCard ?
No.
API of Authorize.net or Paypal were examined on this subject and no results.
That's because you can't get someone else's balance. It's private information.
In real life any cash terminal can show to you balance on your credit card. That is why I assume there is some way to get this balance in web through some payment gateway.
Emphasis on the 'show to you' part because you own the card. And the only allowed parties involved is the cardholder (with card in hand and pin) and the issuing bank and/or card company. Even over the phone there are security checks (Date of birth, zip/postal code, etc)
You will (should) never be able to get, through an API, gateway solution, or otherwise, the card holders balance unless you are affiliated with the issuing credit card and have been requested by the card holder after security checks.
This would be a gaping security and privacy hole. Think of all the professional credit card theifs being able to pull the balance amounts on thousands of credit cards in order to help know which cards and how much of an amount to charge, transfer and extort.

How to implement payment to multiple suppliers

I'm trying to integrate a payment mechanism to my site. The scenario that I need is not trivial and can be explained by the following example:
User pays upfront for a subscription program (i.e. receiving Netflix). User is able to make changes to the subscription (i.e. change number of movies checked out each time from 4 to 2)
User is able to buy additional one time purchases via the provider's site (Netflix) supplied by 3rd parties. These items (i.e. popcorn, snacks) get billed to the same credit card as the subscription without having to go through the process of resubmitting the credit card information.
Of course, my site takes also a small fee for the transactions :-)
I was wondering if this is supported by PayPal, Google Checkout or someone else.
Thanks.
The Paypal api can handle all of those processes.
I seem to have dropped the ball on what kind of answer you wanted so I'll leave it at that.
If you have some feedback, more direct questions I will try to answer as much as I can
--
The money would best go through you first, unless somehow you can convince your customers its normal to bill them per item. Also if they pay by credit card you should only bill them once as you would incur fees on every payment. I don't know of anyway to bill once but distribute the payments.
As for the paypal docs..
Very good resource, there is also some sample code for most major web languages
Also this will get you started if you don't have a developer login
Their developer support is also pretty good. One thing a lot of people seem to screw up when starting out with the paypal api is not setting the latest version in the configs so don't forget to update that to the latest release. :)
Disclaimer..
Yea I know there is a lot of bad press about paypal and crazy stuff happening, but they do get the job done most of the time, its not my fault the customers love to use it.

Recurring Payments in PayPal

I am trying to use the Recurring payment API offered by PayPal.
I have a scenario which I am not able to address directly. It goes like this.
We have a website where we sell some services. Now the services are charged per user license. A user can buy/cancel user license in between. We want to offer the customer a recurring billing option. We have to notice here that the amount may vary each billing cycle based on the number of user licenses the customer uses during that cycle.
Is there any way I can achieve this using PayPal recurring Payment API's.
I realize this is a very old post, but it still shows up for Google searches, so I thought I'd add:
Paypal does allow you to do this now, using their new adaptive payments api.
Authorize.net also has a service that might work called Customer Information Manager.
The recurring payment option is a fixed amount that the customer pre-agrees to pay each month (or period). To do what you're trying to do, a customer would have to pre-agree to pay whatever amount you decide to charge at a later time. This means pre-authorizing an unknown payment amount, which will not be allowed by any payment service.
Your only options are:
Bill the variable amount each month (i.e. no subscription).
Set up a subscription where the monthly amount is the maximum that could potentially be billed, and then refund the difference each month.
Good luck with #2 - I would never agree to such a thing as a customer, personally.
What you're looking for is covered in the UK by the Direct Debit system, however given the potential for abuse it's very tightly controlled and there are a lot of restrictions and regulations governing it.
I'd strongly suggest you just set up a monthly invoicing system that just bills the client each month.
I don't know its meaning full or not as it is a very old post.
Instead of creating recurring profile on PayPal Server, You can store the customer's credit card on the PayPal using REST API: https://developer.paypal.com/docs/api/#vault then every month you can fetch it and charge it like recurring Payment Or When client is no longer with the services then just remove its card from PayPal.
I suppose Authorize.net SIM method also does the same.
Hope this make sense.