PayPal Credit Card Payment Processing Workflow - authorize, update amount (add to), capture - paypal

We are working on a payment plugin for our e-commerce solution and having trouble with a workflow we wish to accomplish.
The workflow we want to provide would be as follows:
Customer adds items to cart.
Customer provides Credit Card information and submits order.
Store Owner calculates shipping and manually updates order total.
Order is processed and payment captured.
We seem to be running into an issue with 'authorize and capture' as credit cards are authorized for one amount and we cannot then 're-authorize' for the total (to include shipping fee).
Additionally we cannot do any kind of % over total to authorize, as the shipping fees can vary significantly.
Are we missing something in the API docs that will allow this workflow?

Related

PP REST API charge tax and shipping without sending address?

Using the REST API, how can I charge tax or shipping if I send the user to PayPal to collect shipping information (and pay, of course)?
Doing some research it almost seems like that isn't possible, but I can't imagine that being the case. If I have to collect shipping information myself, the value prop for using PP is greatly reduced.
With the REST API, just like the Classic API, a PayPal payment is executed in three steps:
1) Send initial information to PayPal to get a token. Redirect customer to PayPal. Customer authorizes payment.
2) Get payment details (like the shipping address)
3) Confirm payment.
So, in this case, after getting the shipping address, you display an order review page to the customer where it will generate the shipping options and tax amount to the customer. They then have to select a "Confirm Order" button which will then finalize the charge to PayPal with the new tax/shipping and final amount.
In API terms, the final step is done with the /execute command. This accepts the payer_id you received in step 2, and a transactions array that supports a new amount object.
The amount object includes a details object that includes shipping, tax, handling fee, insurance, etc.
Include the details the customer decides on your review page and PayPal will charge the updated amount to the customer's funding source of choice.

Send part paid cart to PayPal

I need to send a cart to PayPal for payment using the FORM integration method where the cart value has already had a part payment made against it, usually by another means, like 'on account' or a gift card for example.
Is there an accepted way to do this?
The only thing I can find is sending the already paid amount as a discount amount but that's not 100% ideal as it isn't in reality a discount.
The other option I came up with was to just send a single line cart with an item of 'Balance of your order XXXX' but this is also not ideal as the customer wouldn't then see the actual items listed when on PayPal.
Many thank.
I can think of 3 PayPal features that you might possibly use to do this:
Authorization and Capture
Authorization & Capture, or Auth/Capture, allows you to authorize the availability of funds for a transaction but delay the capture of funds until a later time. This is often useful for merchants who have a delayed order fulfillment process. Authorize & Capture also enables merchants to modify the original authorization amount due to order changes occurring after the initial order is placed, such as taxes, shipping or gratuity.
Recurring Payments
PayPal Recurring Payments allows you to bill a buyer for a fixed amount of money on a fixed schedule.
Note You can also setup another form of recurring payments using reference transactions to handle payments for varying amounts of money on a varying schedule.
Reference Transactions
A reference transaction is a financial transaction from which subsequent transactions can be derived. For example, a buyer purchases an item on your site, and you use the PayPal transaction ID or reference transaction ID later to initiate another transaction. Reference transactions and billing agreements also enable you to handle recurring payments for varying amounts of money on a varying schedule.
You can read more about these features here: https://developer.paypal.com/docs/classic/admin/intro/

How to save credit card and make re-bill based on varying amount and frequency (not recurring billing)) using paypal

I want to save credit card info of customers and later I want to bill them on different time period. Billing amount and frequency may change. Is this possible via paypal??
To do this you'll want to have Reference Transactions enabled on your PayPal account. This allows you to process future orders for existing customers who have 'stored' a Credit Card on a previous order. When processing new orders you/your customer will no longer need the originally used card, just select to 'Use Stored Card'.
However, you're cart/custom code will need to support Reference Transactions in order for this to work.

Capture Card capabilities in PayPal Payments Pro

Capture Card as I understand it allows a seller to securely accept an online order with credit card name, number and code via a shopping cart. We can subsequently ship the order, add the freight to the invoice and submit the total amount to the credit card for payment. After the payment has been posted the credit card information is wiped from the order.
I was led to believe that I could do this with a PayPal Payments Pro account, so I created one and sent a test invoice through with my own credit card. The amount of the invoice with tax was immediately posted to my PayPal account without the opportunity to add freight.
Can anyone on this forum provide a solution or workaround?
Thanks!!
Are you processing this initially as a sale or an authorization. If you are wanting to use the DoDirectPayment API with Website Payments Pro, you could process a 1.00 authorization to validate the card. Then perform all of the calculations that you are needing to, and then process the payment using the DoReferenceTransaction API call where you send across the full amount you want to charge to the buyers card. You only have to reference the transaction id for the last successful 1.00 auth you did, and PayPal will use the same credit card information. Otherwise you could also process the DoDirectPayment API call with the full amount at the time of checkout, and just use the DoReferenceTransactions API call to charge any additional charges to where not initially charged such as tax and shipping.
Another option would be to use Express Checkout, and process the transaction as an order. This will allow you to make more then one authorization/capture against the order. You can also set a max amount in the Express Checkout API calls.

Changing the Amount of a PayPal Subscription

We are using PayPal subscriptions to automatically make ongoing monthly donations. The user initially creates a subscription with some pre-determined monthly donation amount (e.g., say $50/month). This creates a recurring subscription which we process by way of IPN. All good there. But, our interface allows the user to come in and change their monthly donation amount, say from $50/month to $100/month. I am wondering how I can change the PayPal subscription to reflect this new amount?
There is a method in PayPal's NVP API called "UpdateRecurringPaymentsProfile" which says I can update the subscription amount, but unfortunately it says:
For recurring payments with Express Checkout, the payment amount can be increased by no more than 20% every 180 days (starting when the profile is created).
(reference: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_UpdateRecurringPaymentsProfile)
To be honest, PayPal's API's are quite confusing so I'm not sure if I am using the Express Checkout or not. (We are creating Subscription buttons using the simple Website Payment Standard API).
Will this work? If not, is there an alternative to achieve what we need?
Thanks!
I'm not sure if I am using the Express Checkout or not. (We are creating Subscription buttons using the simple Website Payment Standard API).
I hope rereading the above, you will realize that you answered your own question: You are using Website Payments Standard (WPS) not Express Checkout (EC).
With WPS, you can create a subscription modify button but this is super inflexible and I would not recommend it.
With EC, you can modify subscriptions as well (page 99):
Use the UpdateRecurringPaymentsProfile API to modify a recurring payments profile.
NOTE: You can also modify recurring payments profiles from the PayPal website.
You can only modify the following specific information about an active or suspended profile:
Subscriber name or address
Past due or outstanding amount
Whether to bill the outstanding amount with the next billing cycle
Maximum number of failed payments allowed
Profile description and reference
Number of additional billing cycles
Billing amount, tax amount, or shipping amount
NOTE: You cannot modify the billing frequency or billing period of a profile. You can
modify the number of billing cycles in the profile.
NOTE: For recurring payments with Express Checkout, certain updates, such as billing
amount, are not allowed within 3 days of the scheduled billing date, and an error is
returned.
You can modify the following profile information during the trial period or regular payment
period:
Billing amount (excluding tax and shipping)
Number of billing cycles
With that information out of the way... For the most flexibility:
Look at creating Billing Agreement IDs through Express Checkout. You will need to get Reference Transactions enabled on your PayPal account (talk to merchant support to get this done).
With a BAID, you control when your customers are charged, how much they are charged, and pretty much anything else having to do with the transaction. The drawback is the same as the benefit.. you (see 'have to') control it all.