Comment utiliser le simulateur de notification de paiement instantané sur une machine locale? Que sera fourni dans l'URL du gestionnaire IPN? Je n'ai pas accès à notre routeur.
Merci
Vous ne pouvez pas tester IPN sur votre hôte local, car IPN concerne le serveur de Paypal initiant un côté serveur POST à une URL que vous définissez.
Par conséquent, votre script IPN doit être accessible par le monde extérieur (ou vous pouvez utiliser un tunnel tel que ngrok.me/localtunnel.me).
Vous pouvez tester sur localhost en utilisant ngrok .
Exécutez simplement ngrok localement puis collez l'url de test que ngrok vous donne (quelque chose comme http://1bc7d09d.ngrok.com/ )
Il fournit un tunnel à votre hôte local.
Le simulateur IPN de Paypal ne fonctionnera pas avec localhost. Cependant, vous pouvez simuler le simulateur :-). Pour ce faire, vous devez installer un plugin/extension de navigateur tel que poster pour firefox ou Advanced Rest Client pour google chrome.
Ouvrez l'application et insérez l'URL que vous écoutez pour les réponses IPN:
http://localhost/ipn
Mettez ce qui suit comme vos données POST et soumettez la demande:
residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=421462822&receiver_email=seller%40paypalsandbox.com&custom=xyz123+CUSTOMHASH&payment_date=12%3A40%3A25+27+Aug+2013+PDT&address_country_code=US&address_Zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx&address_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com¬ify_version=2.4&txn_type=cart&test_ipn=1&payer_status=unverified&mc_currency=USD&mc_gross=12.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=9.34&payment_type=instant&address_street=123%2C+any+street
[~ # ~] mise à jour [~ # ~] : Je viens de commencer à utiliser une autre option qui est plus facile, https: // localtunnel. moi . Pour installer et exécuter le module, procédez comme suit. Il affichera votre URL publique. Toutes les demandes adressées à cette URL publique seront transmises à votre hôte local.
npm install -g localtunnel
lt --port 80
Vous pouvez simuler la publication IPN de Paypal en exécutant le script ci-dessous que j'ai créé sur votre hôte local (vous aurez besoin de curl installé). Tant que votre auditeur pointe vers le bac à sable, il doit valider. Remplacez votre auditeur par Paypal en direct et il ne devrait pas être validé.
<?php
// SIMULATE Paypal IPN LOCALLY
//
// Sometimes you need to test on your local Host and this can be difficult due
// to IP routing issues. Use this code on your local machine to simulate the
// same process that the sandbox IPN simulator does when posting to your URL.
//
// Run this code in command line or via the browser. It will post IPN data just
// like Paypal would. If the code you've written to process your IPN data
// posts back to the sandbox, it should come back as valid.
// Put the full url to test in $Paypal_url, include file extensions if necessary
$Paypal_url = 'http://localhost/Paypal_ipn/process'; // IPN listener to test
//example posted data from Paypal IPN
$test = 'residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=421462822&receiver_email=seller%40paypalsandbox.com&custom=xyz123+CUSTOMHASH&payment_date=12%3A40%3A25+27+Aug+2013+PDT&address_country_code=US&address_Zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx&address_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com¬ify_version=2.4&txn_type=cart&test_ipn=1&payer_status=unverified&mc_currency=USD&mc_gross=12.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=9.34&payment_type=instant&address_street=123%2C+any+street';
/*
* More detailed breakout of the raw data
_POST EXAMPLE ARRAY FROM Paypal:
Array
(
[residence_country] => US
[invoice] => abc1234
[address_city] => San Jose
[first_name] => John
[payer_id] => TESTBUYERID01
[mc_fee] => 0.44
[txn_id] => 421462822
[receiver_email] => [email protected]
[custom] => xyz123 CUSTOMHASH
[payment_date] => 12:40:25 27 Aug 2013 PDT
[address_country_code] => US
[address_Zip] => 95131
[item_name1] => something
[mc_handling] => 2.06
[mc_handling1] => 1.67
[tax] => 2.02
[address_name] => John Smith
[last_name] => Smith
[receiver_id] => [email protected]
[verify_sign] => AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx
[address_country] => United States
[payment_status] => Completed
[address_status] => confirmed
[business] => [email protected]
[payer_email] => [email protected]
[notify_version] => 2.4
[txn_type] => cart
[test_ipn] => 1
[payer_status] => unverified
[mc_currency] => USD
[mc_gross] => 12.34
[mc_shipping] => 3.02
[mc_shipping1] => 1.02
[item_number1] => AK-1234
[address_state] => CA
[mc_gross1] => 9.34
[payment_type] => instant
[address_street] => 123, any street
)
*/
//#
// Paypal IPN processor in PHP
// fake Paypal post to test scripts
//#
//----------------------------------------------------------
// Create FAKE post from Paypal.
//----------------------------------------------------------
$req = $test; // use test data
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $Paypal_url);
curl_setopt($ch,CURLOPT_POST, substr_count($req,'&')+1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $req);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
?>
Je teste sur localhost. Vous pouvez utiliser un service comme dyn.com ou noip.com ou pointer un sous-domaine vers votre adresse locale si elle est statique.
/ngrok http -Host-header=yourwebsite.com 80
tunnelera vers localhost avec l'en-tête d'hôte droit