Great! That seems to work.
Thank you.
Richard
On 5/1/2012 12:04 PM, J. Landman Gay wrote:
On 5/1/12 9:36 AM, Richard Miller wrote:
Totally stuck on using PayPal's IPN process with LC. It doesn't appear
that there is any way to have PayPal send the IPN data to a LC cgi
script. Doesn't look like IPN supports cgi.
It does, I've got the data coming in. The only issue I have is that
PayPal hangs waiting for a response, and so it continues to resend
transactions up to 15 times, until it finally assigns the transaction
a "Failure" status and quits.
Here's an outline of my working script, the one in the text file:
on startup
if $REQUEST_METHOD = "POST" then -- this is the only kind PayPal sends
start using stack "liburl"
read from stdin until empty
put it into tOrderData
if tOrderData is in url ("file:paypalLog.txt" ) then exit startup
-- duplicate notification
put "cmd=_notify-validate&" before tOrderData -- required response
put "https://www.sandbox.paypal.com/cgi-bin/webscr" into tPPAddr
post tOrderData to tPPAddr
put it into tResponse -- "VERIFIED" or "INVALID"
processData tOrderData -- do whatever with the data here
end if
end startup
The real script has "LOG" commands all through it, and shows that data
is coming in correctly, the posted reply is being sent, and "VERIFIED"
is returned from PayPal.
PayPal does not get a status code back from my cgi, which is the only
issue I can't resolve. Because it doesn't think it's reached me, it
continues to resend the transaction repeatedly. That's why the fourth
line of the script checks to see if the data is already in the log; if
so, it just drops the request. Note that an exit command in a cgi
script will throw an error 500. PayPal does receive this status code
and reports it in its IPN history log. That doesn't stop it from
repeated sends though.
Other than the resends, it works. You need to create a libURL stack
and put it into cgi folder with 755 permissions. LibURL handles the
POST command. The MC IDE already has one you can clone, or ask if you
need info on how to make your own.
In PayPal you can use the sandbox simulator. Set it to send
transactions to the URL of your cgi script. If you create a sandbox
test button, set that up with the cgi URL too.
Except for the duplicate resends, it works.
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode