title: PayPal IPN simulator returning "INVALID" but I've followed the rules
body: <p>So I have a PHP service that's only job is to accept PayPal IPN connections. I'm using PSR7 <code>$request-&gt;getBody()-&gt;getContents()</code> to get the following from PayPal IPN simulator request.</p>
  
  <pre><code>payment_type=echeck&amp;payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&amp;payment_status=Completed&amp;address_status=confirmed&amp;payer_status=verified&amp;first_name=John&amp;last_name=Smith&amp;payer_email=buyer@paypalsandbox.com&amp;payer_id=TESTBUYERID01&amp;address_name=John%20Smith&amp;address_country=United%20States&amp;address_country_code=US&amp;address_zip=95131&amp;address_state=CA&amp;address_city=San%20Jose&amp;address_street=123%20any%20street&amp;business=seller@paypalsandbox.com&amp;receiver_email=seller@paypalsandbox.com&amp;receiver_id=seller@paypalsandbox.com&amp;residence_country=US&amp;item_name=something&amp;item_number=AK-1234&amp;quantity=1&amp;shipping=3.04&amp;tax=2.02&amp;mc_currency=USD&amp;mc_fee=0.44&amp;mc_gross=12.34&amp;mc_gross_1=12.34&amp;txn_type=web_accept&amp;txn_id=787223012&amp;notify_version=2.1&amp;custom=xyz123&amp;invoice=abc1234&amp;test_ipn=1&amp;verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23
  </code></pre>
  
  <p>So when I post this back using Guzzle 6 <code>POST</code>ing to <code>https://www.sandbox.paypal.com/cgi-bin/webscr</code> using the following <code>body</code>.</p>
  
  <pre><code>cmd=_notify-validate&amp;payment_type=echeck&amp;payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&amp;payment_status=Completed&amp;address_status=confirmed&amp;payer_status=verified&amp;first_name=John&amp;last_name=Smith&amp;payer_email=buyer@paypalsandbox.com&amp;payer_id=TESTBUYERID01&amp;address_name=John%20Smith&amp;address_country=United%20States&amp;address_country_code=US&amp;address_zip=95131&amp;address_state=CA&amp;address_city=San%20Jose&amp;address_street=123%20any%20street&amp;business=seller@paypalsandbox.com&amp;receiver_email=seller@paypalsandbox.com&amp;receiver_id=seller@paypalsandbox.com&amp;residence_country=US&amp;item_name=something&amp;item_number=AK-1234&amp;quantity=1&amp;shipping=3.04&amp;tax=2.02&amp;mc_currency=USD&amp;mc_fee=0.44&amp;mc_gross=12.34&amp;mc_gross_1=12.34&amp;txn_type=web_accept&amp;txn_id=787223012&amp;notify_version=2.1&amp;custom=xyz123&amp;invoice=abc1234&amp;test_ipn=1&amp;verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23
  </code></pre>
  
  <p>I get <code>INVALID</code> for a response. I don't know if it coming from a different IP address to the server that handles the SSL termination is the issue or if I'm just going mad.</p>
  
  <p>I've ran a diff on PayPal's simulator request body to the body I send back without the <code>cmd</code> variable and there is no difference.</p>