Implementing PayPal IPN with custom cart use - paypal

I am trying to set up PayPal's IPN for custom cart use. But somehow it does not work. Can you guys have a look at the PayPal button code I am using? Do you notice any problems? Once I click on the Pay button, I am taking to PayPal's page that has the follow message:
We have detected a problem with this shopping cart. If the problem persists, please contact the merchant.
Questions:
What is the right way to name these variables: item_numberX or item_number_X? And the same with variables responsible for: price, name, and quantity. Do I need to add the underscore?
<input type="hidden" name="item_number_1" value="1">
<input type="hidden" name="item_name_1" value="Service 1">
<input type="hidden" name="amount_1" value="148.00">
<input type="hidden" name="quantity_1" value="1">
<input type="hidden" name="mc_gross_1" value="148">
<input type="hidden" name="item_number_2" value="2">
<input type="hidden" name="item_name_2" value="Service 2">
<input type="hidden" name="amount_2" value="30.00">
<input type="hidden" name="quantity_2" value="1">
<input type="hidden" name="mc_gross_2" value="30">
<input type="hidden" name="return" value="http://www.sitename.com/thank-you/">
<input type="hidden" name="notify_url" value="http://www.sitename.com/ipn.php">
<input type="hidden" name="first_name" value="Peter" />
<input type="hidden" name="last_name" value="James" />
<input type="hidden" name="payer_email" value="alex111#gmail.com" />
<input type="hidden" name="item_number" value="144" / >
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"
border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
Thank you.

You have most of the button right, the only variables I see issues with are "mc_gross_x", "payer_email" and "item_number". I am not sure where you got mc_gross_x at, but this would not be used in a button, you may have it confused with an IPN variable. As for payer_email, again you may have this confused with an IPN variable. If you are trying to populate the buyers email address on the PayPal payment page, it would just be "email". Also, you do not need to pass "item_number", since you are using the cart upload method, you would just use the format that you are already using up above in your code"item_number_x".
If the button still does not work for you, I would need to see the rest of the bottom code to see why it is not working.

Related

Paypal button failed to process some user payment

We integrated Paypal button to support our starting business. We received several user feedbacks about not being able to complete payment. They reported that they can see the payment page after clicking the Buy Now button. However they tried pay through Paypal account, pay with credit card and pay with Paypal credit. None of them work. However, no one in our team has faced such problem when checking out. So we really don't have an idea about what's going on. Here is an example Paypal button code we use:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="business#myticket.com">
<input type="hidden" name="env" value="www">
<input type="hidden" name="address_override" value="0">
<input type="hidden" name="item_name_1" value="演唱会">
<input type="hidden" name="amount_1" value="122">
<input type="hidden" name="discount_rate_1" value="10">
<input type="hidden" name="item_name_2" value="演唱会">
<input type="hidden" name="amount_2" value="122">
<input type="hidden" name="discount_rate_2" value="10">
<input type="hidden" name="shipping_1" value="$27.95">
<!-- Fill full name in the first_name field -->
<input type="hidden" name="first_name" value="Bruce Lee">
<input type="hidden" name="notify_url" value="https://www.myticket.com/payment/ipn">
<input type="hidden" name="address1" value="">
<input type="hidden" name="address2" value="">
<input type="hidden" name="city" value="">
<input type="hidden" name="state" value="">
<input type="hidden" name="zip" value="">
<input type="hidden" name="country" value="US">
<input type="hidden" name="email" value="">
<input type="hidden" name="custom" value="lmIvjDuZVRsCWFPDdfFsrKiNVrnAbWeTZSINiDuszZEGKjeXfhqxyqRrn">
<input type="hidden" name="paymentaction" value="authorization">
<input type="hidden" name="charset" value="utf-8">
<input type="hidden" name="return" value="https://www.myticket.com">
<input type="hidden" name="cancel_return" value="https://www.myticket.com">
<input type="image" name="submit" border="0" src="https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-large.png" alt="Check out with PayPal">
</form>
Is there any problem with this Paypal button? If not, what else could be causing the payment to fail?
Besides, is there a way we can get a message about these failures? Right now we are using IPN. However IPN doesn't seem to notify us about these payment failures.
BTW, myticket.com is a fake url in this post.
Well first, when using Website Payments Standard buttons, you don't get much back as far as the declines. Typically you are only going to get details of declines back when you are using API calls to process the payment. As for the button itself, it looks fine to me. Perhaps some of the issue is with the special characters for the item name which is leading to the failure. You could try creating 2 of the same buttons/items but without the special characters and see if those same buyers run into the issue with the second button that they did with the first one. You could also try using the "lc" variable in your button code to see if this helps. You can see the description of what the "lc" variable does here.

how to change the name in the "cancel and return to" link on the express checkout

i'm creating a small marketplace where several sellers can sell their products and each has their own express checkout link, depending on their email.
my form is like this:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="form_paypal">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="bn" value="wa_dw_2.0.4">
<input type="hidden" name="business" value="receiver#gmail.com">
<input type="hidden" name="receiver_email" value="receiver#gmail.com">
<input type="hidden" name="amount" value="123.00">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="return" value="http://www.me.com/return.php">
<input type="hidden" name="item_name" value="Product Title Goes Here">
<input type="hidden" name="undefined_quantity" value="0">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="custom" value="12345">
<input type="hidden" name="cbt" value="Return to MY WEBSITE NAME">
<input type="hidden" name="cancel_return" value="http://www.me.com/failure.php">
<input type="hidden" name="notify_url" value="http://www.me.com/notify.php">
</form>
note that i set the "cbt" value as per https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/ but it's not working :( the return link still shows
"cancel and return to receiver#gmail.com"
which is confusing and just plain ugly for the buyer.
any ideas what i'm doing wrong here?
it's the same on the sandbox or the live version, i might add.
The document says "cbt : Sets the text for the Return to Merchant button on the PayPal Payment Complete page.For Business accounts, the return button displays your business name in place of the word "Merchant" by default. " This means you will see this text on the PayPal thank you page after the buyer completes the payments . Something like below :
First, what you're using here is Payments Standard, not Express Checkout. Eshan is correct with the information he provided regarding the parameter you're working with...it doesn't come up until after the payment is completed.
If you were actually using Express Checkout you would indeed have control over what you're asking about via the BRANDNAME parameter. It would still say "Cancel and return to" but then whatever you set for BRANDNAME would get output after that.
To my knowledge Payments Standard does not give you access to adjust the cancel link like EC does.

paypal return field ignored on live

I have a form like the below which works correctly when the business is a sandbox account but not when I use a genuine business account.
In the latter scenario the return field is never shown and instead I am seeing a paypal payment confirmation page.
I've tried enabling/disabling auto-return in the business account but it makes no difference.. any ideas?
<form target="paypal_iframe" name="form_iframe" id="form_iframe" method="post" action="https://securepayments.paypal.com/cgi-bin/acquiringweb">
<input type="hidden" name="cmd" value="_hosted-payment">
<input type="hidden" name="subtotal" value="100">
<input type="hidden" name="business" value="my#email.com">
<input type="hidden" name="currency_code" value="GBP">
<input type="hidden" name="lc" value="GB">
<input type="hidden" name="paymentaction" value="sale">
<input type="hidden" name="template" value="templateD">
<input type="hidden" name="return" value="http://www.mywebsite.com/receipt">
</form>
The only thing that could be causing it, is that if there are issues with the button and it being hosted or non hosted.
The resolution here was to add an extra field not covered in the iFrame documentation
<input type="hidden" name="showHostedThankyouPage" value="false">
Note that the field name is case sensitive.
PP_MTS_Chad was on the right line

Paypal dynamic subscription button ipn

I am using this code I found:
<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr method="post">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="business" value="me#example.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="no_shipping" value="1">
<input type="image" src="http://www.paypal.com/en_US/i/btn/btn_subscribe_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<input type="hidden" name="a3" value="5.00">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="src" value="1">
<input type="hidden" name="sra" value="1">
</form>
When you generate a button from paypal site, it gives you the option to select the link where to send the ipn. My question is, how do I get the ipn confirmation using the code above or how do I set the link for it?
To add IPN notifications to this button specifically you can just add an additional hidden field to the form.
<input type="hidden" name="notify_url" value="http://www.domain.com/ipn-listener.php" />
That will only trigger an IPN for the initial transaction, though. If you want to get IPN's for all payments associated with this profile from there on you'll need to configure IPN in your PayPal account profile under the Instant Payment Notification Preferences section. Simply turn it on and set the URL you want to use.
At that point, the account profile setting will be sort of a default IPN that your account will use for all transactions. However, this can be overridden using notify_url (or NOTIFYURL in API requests.)
Hope that helps.

PayPal Checkout Buttons and Custom Variables

I have created a rather simple photo gallery that I wish to apply PayPal Checkout buttons. The basics are simple enough, but what I want to do is to at least pre-populate the named fields as part of the button or pass variables contained in each individual page through to the cart.
Each page contains a picture ID, date, and title. I would like to be able to pass this data along so that when someone clicks "Add to Cart", the data is already there. Right now the only way I can see the buttons working is creating custom fields and having the customer copy and paste the data themselves, kind of a pain.
If I could figure this one thing out PayPal checkout might be worth while. Has anyone here ever done this?
You need something like this? I got it out of the PayPal docs awhile back. I'm using it in a production app now. Please test before using though :)
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post" style="margin:4px 0px 0px 4px;">
<input type="image" src="<ADD_TO_CART_BUTTON>.jpg" border="0" name="submit" alt="Add this item to your shopping cart">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="add" value="1">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="<YOUR_PAYPAL_EMAIL>">
<input type="hidden" name="item_name" value="<THE_ITEM_NAME>">
<input type="hidden" name="item_number" value="<THE_ITEM_NUMBER_SKU_OR_WHATEVER>">
<input type="hidden" name="amount" value="<HOW_MUCH_IT_COSTS>">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="<CUSTOM_TEXT_FOR_THE_BUYER_TO_LEAVE_YOU_SPECIAL_INSTRUCTIONS>">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="bn" value="PP-ShopCartBF">
<input type="hidden" name="address_override" value="1">
<input type="hidden" name="business_cs_email" value="<YOUR_PAYPAL_EMAIL>">
<input type="hidden" name="return" value="<WHERE_TO_TAKE_THE_USER_AFTER_PURCHASE_LIKE_thankyou.html>">
<input type="hidden" name="notify_url" value="<IF_YOU_PROCESS_ORDERS_THROUGH_YOUR_SITE_THE_CALLBACK_URL_GOES_HERE>">
</form>
You'll need one of these for each item you're selling.
Signup at http://sandbox.paypal.com and start working in their sandbox to try this out.
Also check out http://www.x.com and http://www.paypal-labs.com. They've been doing some cool stuff with checkouts.
Also check out using the "custom" PayPal variable, which you can use to pass any information you want to PayPal and get it back when the transaction completes.