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

Reply via email to