how to specify Paypal Digitial / Virtual goods in checkout - paypal

I have a webform for paypal payment with a bunch of input type=hidden. My form begins with --form action="https://www.paypal.com/cgi-bin/webscr" method="post"
how do i specify that the item is virtual goods? is there a variable to set?

I don't think Payments Standard supports it technically. You would need to use Payments Pro or Express Checkout, and then you would use the L_PAYMENTREQUEST_n_ITEMCATEGORYm parameter, where n is the payments number starting with 0 and m is the item number starting with 0.
So, you could have multiple payments on a single transaction, each with one or more items, and any or all of those items could be set as digital goods items.
See the Express Checkout Digital Goods documentation for more details.
If you're working with PHP then my class library for PayPal will make the Express Checkout integration very simple for you.

Related

Any way to process payments for 3rd parties without using Adaptive Payments?

Our software collects payments on behalf of 3rd parties using Adaptive Payments (redirect as well as embedded options). We don't split/chain the payments in any way... just act as middle man shuttling the full payment from payer to primary receiver.
Unfortunately, Adaptive Payments is ancient technology and the guest checkout option is a TERRIBLE user experience. We'd like to be able to create our own custom guest (credit card) checkout process and not have to rely on the Paypal redirect page OR the lightbox (embedded) option. Ideally, it would be great to use Direct Payment API however, from what I understand, this would require all our customers to have Paypal Payments Pro account ($35 per month) which would be a huge roadblock to adoption for us.
Is there any way for us to collect payments on behalf of 3rd parties using our own custom guest checkout but WITHOUT requiring our customers to upgrade to Paypal Pro account?
You can use Express Checkout with Parallel Payments ;
Express Checkout with Parallel : https://developer.paypal.com/docs/classic/express-checkout/ht_ec-parallelPayments/
Or you can use MassPay. It depends on your need.
MassPay : https://developer.paypal.com/docs/classic/products/mass-pay/

recurring vs subscription confusion

I am developing an IPN application for a non-profit who wants to take monthly recurring pledges. The IPN variables manual has two separate entries: subscription & recurring and it appears recurring is what I need and so I would use the txn_type=recurring_payment.
The problem is that when I turn to the "HTML Variables for PayPal Payments Standard" manual, I can't find an appropriate _xclick value for recurring payments. Yes there is one for subscriptions but nothing for _xclick.
How then do I code for recurring payments in the HTML? Or is recurring payments not available to HTML Standard Payments?
While technically they are the same thing, PayPal Standard (ie. basic payment buttons) calls it "Subscriptions" where-as the APIs call it "Recurring Payments".
If you want to stick with Payments Standard you would just use the IPN Subscription variables in your IPN code logic. If you do switch to Express Checkout then that's when you would use the Recurring Payments IPN params.
I would recommend using Express Checkout w/ Recurring Payments if you can. This would require some more in depth coding. Assuming you're comfortable with PHP, this PHP PayPal SDK would make the Express Checkout and Recurring Payments API calls very quick and easy for you.
The recurring-payment feature you are referring to is an API based product. If you are using PayPal Payments Standard, the subscription variables are your only option.
You can use Recurring Payments with Express Checkout. Here is a link to the developer documentation:
https://developer.paypal.com/docs/classic/express-checkout/ht_ec-recurringPaymentProfile-curl-etc/

Paypal IPN set "no account" as default

I have a working paypal IPN, but ive been wondering: can I somehow set the "I have no paypal account" as the default choice when a customer is directed to paypal?
Short anwer: No, don't do that.
Long answer:
PayPal sets this dynamically based on customer information, primarily the cookie. In other words, people who have logged into PayPal on that device/browser before generally see that option presented first; people who have not are presented content that features the non-PayPal-login more prominently. This is done (primarily) to increase conversion for you (ie get the highest percentage of people to complete the payment & buy from you). Trying to defeat PayPal's code here would usually be counterproductive.
That said, there are also differences in how PayPal's screens are presented between various PayPal products (e.g. Payflow looks different from Express Checkout which looks different from Website Payments Standard) due in part to the mix of payment methods supported by each of these products, and also in part to expected customer mix with each of these. Some of these products also vary their behavior somewhat based on account settings or button/api parameters, again with the goal of being as effective for you as possible. But those parameters are product-specific and the question did not specify which PayPal product you are using.
As an example of variation between (and within) products:
Website Payments Standard (WPS) was designed to allow a merchant to accept payments from everyone, as the merchant's "sole solution." Express Checkout was originally designed to be used alongside a merchant's existing or separate credit card collection page, by merchant who would directly bill credit cards through a separate product (PayPal's DoDirectPayment or another processor). So PayPal's first WPS page was designed to present well to buyers with just credit cards or buyers with PayPal accounts. But a buyer would only be sent to the Express Checkout screen if they proactively chose to use PayPal rather than entering a credit card directly on the merchant's page, so PayPal's first Express Checkout screen could be aimed directly at PayPal account holders to generate the most intuitive buyer experience and highest conversion. Since that original version (ten years ago, in 2005!), however, Express Checkout has become more integrated into "PayPal Pro" and can also used as a sole solution, like WPS. For that usage it now supports an option that includes collecting card payments without a PayPal account.
PayPal also offers Payflow, Hosted Sole Solution, Adaptive Payments, and more payment flows.... each of which offers some slightly-different balances of buyer experience (and merchant experience/requirements -- e.g. some of these give the merchant access to credit card numbers and require PCI and merchant banking agreements, etc etc).

Credit Card Options in Paypal Express Checkout

I have setup the express checkout process integration in asp.net mvc. When user is redirected to paypal website after submission, there is only option to login using paypal or sign up new account. There is no option to pay using credit card ?
Am i using right API for this?
By default Express Checkout is for PayPal accountholder payments; originally you would pair this with some other product for credit card payments (such as collecting the card information on your site and calling PayPal DirectPay or some other card processing partner).
PayPal also has several somewhat-similar products that collect the card information on their site (so you don't have to) and do that as well as accountholder payments; these vary in whether they end up giving you access to the credit card information (more flexible, but means you have to safely handle the card information and meet industry regulations, including vetting) or you do not ever see the card, just the money (simpler). This is often called some form of "guest checkout."
And eventually PayPal did add a guest checkout option to Express Checkout called "Account Optional." So you can use Express Checkout and get a guest checkout experience. See this link:
PayPal: express checkout pay without account
So in short you can get this from EC if you configure things for it, although some other PayPal products might be a better fit depending upon your particular requirements.

Is it possible to get the last four digits of the user credit card with PayPal Express Checkout?

I'm using the Express Checkout API to handle PayPal payments from a web application. Is it possible to access the last four digits of the user credit card number with this structure? Please note that I can't use another payment flow for now.
No. That's the whole point of PayPal. You're not supposed to have any access whatsoever to the buyer's financials.
In addition, the buyer could be using a bank account / PayPal balance to fund the transaction.