Paypal Instant Payment Notification INVALID - paypal

I'm trying to implement Paypal IPN, i'm testing from sandbox ipn simulator, but always getting invalid, I can't realise what is happening.. I searched and everyone who had this problem used HTTP 1.0 but in this case that is not problem its 1.1 protocole. I hope someone who knows more about paypal api can help me.
Here is some outputs and code.
This is curl output that is made in the last step verification:
http://pastebin.com/1cMDEAUY
And full class if you need to see something more:
http://pastebin.com/vwKixapL
Thanks

I found a problem, everything was setupped correctly, but their data for date in sandbox was invalid ( It was like this Sun May 22 2016 14:07:48 GMT+0200 (CEST) ), but then i found another paypal simulator https://developer.paypal.com/webapps/developer/applications/ipn_simulator and date their was like 05:08:15 22 May 2016 PDT, and now it work.

Related

Cannot fetch the sandbox test accounts from paypal

I was trying to get the details of my sandbox test accounts in paypal unfortunately, it came up empty and just says this
We’re sorry, something went wrong while fetching test accounts. Please try again.
I also can't see my app in "My apps and credentials" and just says the same thing.
I tried to make a transaction to one of my sandbox test accounts and process the payment flawlessly.
I was wondering how long do I have to wait? or Does paypal have their server overload?
This seems to be an issue with PayPal itself, since there are other people with same issue today. We need to wait for PayPal to solve this.
EDIT: Weekend is over, PayPal Sandbox is working! :)
As of February 27, 2017 10:01 PM GMT 8+.
It seems the site is back to normal again. I could view my apps and the sandbox test accounts I created.

PayPal changes requiring update by January 18, 2017

After updating SSL certificates in 2016, my PHP integration of PayPal Standard has been working fine. I recently received a notice from PayPal saying, "Your integration is passing invalid or incorrect data to PayPal in one or more of your payment buttons. To ensure you can continue processing payments, please update your integration before January 18, 2017." The notice points to guidance that simply says to make sure your buttons comply with the Website Payment Integration Guide.
I can find nothing in my Pay Now button that sends data that does not meet the standards in PayPal's integration guide. I am unaware of any recent change made by PayPal that requires an "update."
Can anyone enlighten me or point me to a source of information on this January 18 "update."

Paypal Adaptive Live App not correctly working Sandbox OK

I have a Paypal app that uses adaptive pre-approved adaptive payments.
The sandbox is performing great, meaning all functions work fine including the below 2 points; however, the Live app is not working properly as per the below.
When a user makes a pre-approved payment, for some reason the date of the pre-approval changes. For instance if I make a payment on Oct. 25th, screen 1 shows start date of Oct 26 and end of Oct 27 which is fine, but the screen 2 (to confirm payment) shows start date of Oct 27 and end of Oct 28.
Transaction history dashboard of successful transactions not showing on our admin dashboard (althought paypal transactions occurred and were successful) of our website anymore. The dashboard usually shows name, address, and transaction amount of pledgers, project owners. The info is fetched from Paypal and displayed on our admin dashboard
Would you have any idea of what can cause this? The above is working just fine using the Sandbox APP.
I noticed your question is quite old and there was no response but I'm sure it was eventually sorted from your side. I also see you are based in South Africa. My Experience was that sandbox will work perfectly where currency is set US$ and also using US sandbox email addresses available on developer platform. As soon you go live, Paypal will now detect you are based in South Africa and features like Masspay then become an issue.

Paypal sandbox not working anymore

Everything was working fine last Friday, but today I have been getting the following message:
.
The message I get when trying to make a payment using paypal sandbox is this:
We can't process your payment right now, so please try again later.
We're sorry for the inconvenience.
It's been like this all day, not sure if something has happened to my system or if something has happened to paypal's sandbox?
NOTIFICATION FROM PAYPAL:
Notification: Issues with Sandbox with preconfigured accounts - Jan 24
Source: https://www.x.com/content/notification-issues-sandbox-preconfigured-accounts-jan-24
WORKAROUND:
Create a non UK preconfigured account or create a manual account.
If everything worked fine then maybe time messed it up so wait for time or check it out again later :). If too long then contact paypal support.

Testing Paypal subscription IPN

I'd like to test paypal subscription IPNs, both the ones received when a subscription is created, and the ones sent later with the next payment (such as monthly if the subscription is $x per month).
However I'd prefer not to wait a month or a day to receive the second IPN. Is there a way to have an IPN sent quicker, such as hourly, using paypal or their sandbox?
On the documentation it says you can only specify years, months, days, and weeks as the subscription period.
PayPal's developer support and documentation is an embarrassment to them. But this particular limitation isn't as debilitating as it seems at first blush.
For testing, define your recurring payment to not have a free trial. When you create a new subscription, your server will receive two IPN messages in quick succession, one to create the subscription and the second to apply a payment. That's basically all you need to test.
If you have a free trial, you'll get basically the same pair of messages, just with a trial period between them. :)
The first message ("create subscription") will look something like this. Note the 'txn_type' -- that's the key bit of information for disambiguating the two messages:
{
"txn_type"=>"subscr_signup",
"subscr_id"=>"unique_id",
"verify_sign"=>"random_gibberish",
"item_number"=>"your_subscription_name"
"subscr_date"=>"14:32:23 Feb 15, 2010 PST",
"btn_id"=>"1111111",
"item_name"=>"Your Subscription Description",
"recurring"=>"1",
"period1"=>"1 M",
# This example is from a "free trial" IPN notification-- if you don't have a
# free trial defined, there will only be 'period1' fields, and they'll
# have the data that appears here in the 'period3' fields.
"amount1"=>"0.00",
"mc_amount1"=>"0.00",
"period3"=>"1 M",
"amount3"=>"34.95",
"mc_amount3"=>"34.95",
"mc_currency"=>"USD",
"payer_status"=>"verified",
"payer_id"=>"payer_unique_id",
"first_name"=>"Test",
"last_name"=>"User",
"payer_email"=>"test_xxxx#example.com",
"residence_country"=>"US",
"business"=>"seller_xxxxxxx#example.com",
"receiver_email"=>"seller_xxxxxxx#example.com",
"reattempt"=>"1",
"charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}
The second message is the more interesting one in this case. It will essentially be the exact same message you'll get later when the recurring payment is applied. It looks something like this:
{
"txn_type"=>"subscr_payment",
"subscr_id"=>"unique_id",
"verify_sign"=>"random_gibberish",
"txn_id"=>"payment_unique_id",
"payment_status"=>"Completed",
"payment_date"=>"12:45:33 Feb 16, 2010 PST",
"item_number"=>"your_subscription_name"
"subscr_date"=>"14:32:23 Feb 15, 2010 PST",
"custom"=>"data-you-sent-in-a-custom-field",
"id"=>"1",
"payment_gross"=>"34.95",
"mc_currency"=>"USD",
"payment_type"=>"instant",
"payment_fee"=>"1.31",
"payer_status"=>"verified",
"mc_fee"=>"1.31",
"mc_gross"=>"34.95",
"btn_id"=>"1111111",
"payer_id"=>"payer_unique_id",
"first_name"=>"Test",
"last_name"=>"User",
"payer_email"=>"test_xxxx#example.com",
"residence_country"=>"US",
"receiver_id"=>"your_merchant_id",
"business"=>"seller_xxxxxxx#example.com",
"receiver_email"=>"seller_xxxxxxx#example.com",
"protection_eligibility"=>"Ineligible",
"transaction_subject"=>"",
"charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}
So you can do almost all of your testing without waiting a day. By the time you think you've got it nailed down, you'll be receiving lots of subscription IPN messages the next day.
In addition, here is a link to PayPal's documentation for further reference.
It's possible to resend test IPNs, so you should only need to 'buy' one subscription for testing.
Once you've bought one subscription, here's what to do:
Log into your PayPal sandbox seller account.
Select 'Profile' => 'My Selling Preferences'.
Select 'Instant Payment Notification Preferences' from the third column.
Confirm that IPN is enabled and that the URL is correct.
Click the link to the IPN History page.
Scroll down, tick one or more IPNs and click 'Resend'.
After you confirm, the selected IPN(s) will now be resent to the URL you have specified. You can repeat an unlimited number of times with the same IPN(s).
The excellent answer by #dondo covers the rest.
It used to be that the period specified in days would be treated by the test server as minutes so you'd be called every 3 minutes when specified 'd3'. I think they removed this and I'm not aware of any replacement feature to test subscriptions.
Hey I just wanted to throw a shout out to Neil because that is exactly what I was looking for and I don't have enough reputation to reply or upvote..
Believe it or not paypal still doesn't make it easy to do subscription testing with ipn files :/
So, just because I didn't see it on here and the OP kind of sounded like they were under the impression to only expect two possible responses from papal --
if anyone else is having issues, here are some other txn_type that hit my ipn while doing testing:
//when paypal subscription profile is created for the subscriber
subscr_signup
//payment made for a given billing cycle
subscr_payment
//when subscription fails
subscr_failed
//user cancels subscription - not
subscr_cancel
//end of term - paypal is "done" with that subscriber
subscr_eot
//why I was looking for this thread to begin with lol
recurring_payment_suspended_due_to_max_failed_payment
that last one hit my ipn this morning against every last one of my test subscribers. when I was looking up what that meant, I found that the following are also possible to get:
recurring_payment_profile_created
recurring_payment_profile_cancel
recurring_payment_profile_modify
recurring_payment
recurring_payment_skipped
recurring_payment_failed
I don't know what I did to get that because subscriptions and recurring payments are technically different in PayPal's eyes (subscriptions can possibly never terminate but recurring payments have a cap on the total payments someone can make for any "subscription") but their documentation isn't always straight forward, either, so I dunno. That I'm still working on figuring out as this was a subscription button generated by a sandbox merchant account but whatever.
Happy headaches :)
UPDATE:
I figured out my problem just now - so just so it sounds like I know what I'm doing I'll explain...
I think paypal's subscription sandbox environment is slowly dying. I noticed the other day when I'm messing around in sandbox.paypal.com that I get "Fatal Failure" a lot of times. Refreshing the page seems to correct this most times, although sometimes i have to refresh a few times for the screen to come back.
I am getting the same response from them hitting my IPN file, which explains why every subscription I had got suspended today. Thanks to Neil I was able to resend the IPN response and I captured it into a text file (lol) and then I hit the ipn file reading in the response and throw it back at paypal (its really more complicated than that I'm just making it sound easy).
In any case by refreshing the page I can initiate the paypal handshake more or less on demand and when I do, it's 50/50 - sometimes I get VERIFIED, and sometimes I get Fatal Failure - just like when I try to do much of anything in their sandbox site (Fatal Failure).
Below is an example of part of a failed response I get from them... I get a 200 so I believe hitting their server isn't the issue with connectivity, but I am starting to see a pattern with "Fatal Failure" here and this points to more their end than mine
HTTP/1.1 200 OK
Date: Tue, 29 Sep 2015 02:41:00 GMT
Server: Apache
Fatal Failure
you can also manually create IPN from their sandbox:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session