Paypal delay to send notify_url function - paypal

I am using Paypal to receive my customers pays and set the "notify_url" in my form like
<input type="hidden" name="notify_url" value="www.mywebsite.com/PayPalNotify" />
and i test it with sandbox account the notify function run but after about 30 to 240 minutes can any one tell me if this delay because i am using sandbox or it's normal in Paypal Payment

Related

Paypal's Subscription MAXFAILEDPAYMENTS setting in Express Checkout or Basic HTML Code

We are trying to implement subscription on our website using Paypal's subscription feature. What we want is to let Paypal do the recurring process even if the first payment fails until we or the subscribed user manually cancel the subscription profile.
From what I read here
https://developer.paypal.com/docs/classic/express-checkout/digital-goods/ECDGRecurringPayments/#id086520F027U
If we set the MAXFAILEDPAYMENTS variable to zero it means Paypal will still keep continuing the recurring process even if the payment fails.
However to specify the variable we have to use NVP/SOAP API.
Can we achieve the same thing using the basic HTML Code specified in the payment form ?
<input type="hidden" name="a3" value="1">
<input type="hidden" name="t3" value="M"> <!-- billing cycle unit=month -->
<input type="hidden" name="p3" value="1"> <!-- billing cycle length -->
<input type="hidden" name="src" value="1"> <!-- recurring=yes -->
<input type="hidden" name="sra" value="0"> <!-- reattempt=no -->
{{--End of recurring variables--}}
I could not find the option here
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/
Unfortunately, no, and what's even worse is the parameter you mentioned for the NVP/SOAP API gets ignored.
No matter what you set that paramter to PayPal follows the same routine, which is this...
If a scheduled payment fails it will re-attempt in 5 days. If there are three re-attempts that each fail the profile will be "suspended due to max failed payments."
IPNs would be triggered for each failed attempt as well as for the suspension of a profile, so it's recommended to get an IPN solution setup and working if you do go that route.
What's strange, too, is that sometimes a profile will become suspended after failing three re-attempts as explained, but then if you "collect outstanding balance" using the same billing details provided for the subscription it will process successfully, and then you can re-activate the subscription profile.
Honestly, if I had it to do over again with my own system I would probably not use PayPal's recurring payments API. Instead I would use billing agreements and reference transactions so that I can build my own recurring system and process payments whenever I need for any amount I need. If you're just getting started I would recommend the same for you.

Paypal IPN : notify_url not called

I'm testing a simple paypal paying script whisch works fine except that it's not calling my notify_url and I don't understand why. The url is reachable and even the sandbox IPN testing gives a positive result. Even stranger, on the same domain I have an other script that is working briliantly. Code is not identical, but it's using the same method.
This is the html of the form used to send paymento to Paypal:
form id="ppcheckout" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" name="pp">
<input type="hidden" value="_xclick" name="cmd">
<input id="business" type="hidden" value="xxx#gmail.com" name="business">
<input id="currency_code" type="hidden" value="EUR" name="currency_code">
<input type="hidden" value="http://www.mydomain.com/dir/ipn.php" name="notify_url">
<input id="return" type="hidden" value="http://www.mydomain.com/dir/" name="return">
<input id="cancel_return" type="hidden" value="http://www.mydomain.com/dir/" name="cancel_return">
<input type="hidden" value="1" name="amount">
<input type="hidden" value="Order from mysite" name="item_name">
<input type="hidden" value="1" name="invoice">
</form>
Can't realy figure out what's wrong or missing. Does someone have an idea?
Thanks
Bye
I hope you are not testing paypal on LOCALHOST. That wont work, you need to test it online, in a web server, you can code using localhost but have to upload it to the SERVER so as to test it completely.
Here is a link that might help in configuring paypal - How to Set Up PayPal Integration with PHP & MySQL
You need to edit the Instant Payment Notification (IPN) settings in your PayPal Sandbox business account.
Log into Sandbox business account.
Go to the Profile page and click on Instant Payment Notification preferences link.
Set Notification URL and enable the IPN message.
Full tutorial can be found from here - PayPal IPN / Notify URL is not working on Sandbox Account
Have you verified your sandbox account's email?
This link sounds similar to your problem, and that fixed it for him.
Checked for Queued IPN messages.
Hover over your profile Icon ->
Account Settings ->
(on Left) Notifications ->
Instant Payment Notifications (Click Update) ->
Search for IPN History
Now check whether the messages are queued or failed etc. It well might be paypal sandbox encounter's spikes and can't deliver the messages.
This is a direct link to IPN History
I had a hard time getting the sandbox to work as well. I would try to test it on paypal and confirm that sandbox is not doing something goofy
I had the same issue my login check was creating problem when paypal hit back to notify_url. I passed user session id in notify_url as query string and every thing works fine for me. Paypal on localhost won't work.
Using below link you can download paypal IPN class
http://www.micahcarrick.com/php-paypal-ipn-integration-class.html

PayPal - paying without paypal's account is not returning to my store

PayPal - paying without paypal's account is not returning to my store when complete.
Abdula ben Sulejman, you just completed your payment. Your receipt
number for this payment is: 0000-0000-0000-0000.
We'll send a confirmation email to z___ya#gmail.com. This
transaction will appear on your statement as PayPal *ILYAIZSTEST.
I dont recieve any email from paypal. So how to check that payment?
Obviously you asked how to check the payment details, but was not sure if you were curious as to how to return the customer from PayPal back to your store/website. which is what your title seems to imply.
There are 2 ways of returning the customer to your store.
In your PayPal account, you may enable Auto Return. After the customer has confirmed their payment with PayPal, Paypal will automatically re-direct the customer to your specified return_url. In order to send transaction information to your return_url as well, take a look at enabling Payment Data Transfer (PDT).
In your button code, you may specify the return_url as a hidden input variable. Once the customer has confirmed their payment with PayPal, PayPal will direct the customer to PayPal's receipt page. On this page, PayPal will provide the link you specified.
An example of a Buy Now button, may look like this:
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="me#mybusiness.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="item_name" value="Teddy Bear">
<input type="hidden" name="amount" value="12.99">
<input type="hidden" name="return_url" value="http:/example.com/success" />
<input type="image" src="http://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
For further research, read more here.
As far as checking the payment from the buyer's end, the buyer would either have to wait for the transaction to appear on their statement as specified by PayPal, or should contact the seller for transaction details.

Why is DoExpressCheckoutPayment required for Paypal?

I am trying to build a very simple paypal-backed shopping cart so users can purchase multiple items. I want paypal to handle all the payment details. I don't even want an order confirmation. I will manually check for order confirmation on paypal.
At first I wanted to use "Website Payments Standard" because it seemed easy to create a form that will post to paypal and let paypal handle it from there. But no, this did not work because the "Website Payments Standard" buttons/form do not support submitting multiple items. I tried all sorts of key/value in my form, and it never worked.
Then I tried Express Checkout using the instructions found here. It largely worked, but as I understand it, after sending a SetExpressCheckout, you have to listen for a request from paypal and do a DoExpressCheckoutPayment to complete the transaction. SO reference.
I find this a bit troublesome, because what if my server fails to receive the request from paypal and I never send a DoExpressCheckoutPayment? So a customer THINKS they have finished submitting an order, but the order was never received.
Does anyone know of a way to skip this "confirmation" step? I find it unnecessary, and not sure why paypal requires it.
That's because Express Checkout and Website Payments Standard are fundamentally different products.
To use Express Checkout, you would call the SetExpressCheckout API. In the API call, you specify the details of the products, amounts, and the RETURNURL.
Once you post this data to PayPal's API endpoint, you receive a token in return.
You would then redirect the buyer, and append the token to the following URL: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX
Once the buyer has agreed to your purchase, he is redirected back to the URL you specified in the RETURNURL.
You should now show the order confirmation, and call the GetExpressCheckoutDetails API**.
When calling GetExpressCheckoutDetails, supply the token. In the GetExpressCheckoutDetails API response you'll find a PayerID.
Now you're ready to call DoExpressCheckoutPayment, and charge the buyer. Remember to include both the token and the payerID when calling DoExpressCheckoutPayment.
Note: If you want to charge the buyer immediately by calling GetExpressCheckoutDetails and DoExpressCheckoutPayment immediately, redirect the buyer to https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX&useraction=commit.
The useraction=commit will change the "Continue" button on the PayPal 'Review your payment' page to a "Pay now" button.
--
The reason there's such a significant difference between Express Checkout and Website Payments Standard, is that Website Payments Standard is intended to be a drop-in working solution where PayPal handles the whole transaction flow. Express Checkout is a more flexible solution which allows you to integrate it deeply with an existing checkout flow of a website / shopping cart.
For your use case; lookat using PayPal 'cart upload' buttons.
See for an example https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_cart_upload
<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="seller#designerfotos.com">
<input type="hidden" name="item_name_1" value="Item Name 1">
<input type="hidden" name="amount_1" value="1.00">
<input type="hidden" name="item_name_2" value="Item Name 2">
<input type="hidden" name="amount_2" value="2.00">
<input type="submit" value="PayPal">
</form>
Note however, that this is insecure by default, as the amounts you're going to charge will be plainly visible in the HTML.
** The PayerID is appended in the GET of your RETURNURL as well. So you could skip calling GetExpressCheckoutDetails if you wanted to.
For the purposes of this site, the DoExpressCheckoutPayment operation simply is required by the PayPal Express Checkout API.
You're correct that it's not required for PayPal to process a payment, but there are scenarios that would require a second operation. An example of such a scenario would be one where the user (your site's customer) is choosing a shipping address during the PayPal payment confirmation. Depending on your shipping provider(s), you may need to calculate actual shipping amounts after the user has chosen a shipping address on the PayPal confirmation pages.

Paypal sandbox to original Paypal

I used Paypal sandbox to test my code and my IPN is working.
Now, I need to go to my original Paypal account. My confusion is in sandbox, we make buyers' and sellers' accounts. And we get tit_789456613_biz#yahoo.com like seller account.
Is it needed in original account? If needed, how to make it?
If not needed, which email address should I use? Client's email or client's Paypal contact?
When you switch over from sandbox to real service you use your own real PayPal account as seller/business.
Example:
<input name="business" value="you#domain.com" type="hidden">
And you change the form action from https://www.sandbox.paypal.com/cgi-bin/webscr to https://www.paypal.com/cgi-bin/webscr
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">