views:

1685

answers:

2

Is it possible to use CURL and Paypal's Developer Sandbox? When I try this code it says in print_r($lines); that I need to login to the Sandbox, how can I make it send my browser cookie?

This code is from http://leepeng.blogspot.com/2006/04/standard-paypal-php-integration.html

   $orderno = $_SESSION["ss_last_orderno"];
    $ppAcc = "[SELLER HERE]";
    $at = "[AT HERE]"; //PDT Identity Token
    $url = "https://www.sandbox.paypal.com/cgi-bin/webscr"; //Test
    //$url = "https://www.paypal.com/cgi-bin/webscr"; //Live
    $tx = $_REQUEST['tx']; //this value is return by PayPal
    $cmd = "_notify-synch";
    $post = "tx=$tx&at=$at&cmd=$cmd";

    //Send request to PayPal server using CURL
    $ch = curl_init ($url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);

    $result = curl_exec ($ch); //returned result is key-value pair string
    $error = curl_error($ch);

    if (curl_errno($ch) != 0) //CURL error
    exit("ERROR: Failed updating order. PayPal PDT service failed.");

    $longstr = str_replace("\r", "", $result);
    $lines = split("\n", $longstr);
    print_r($lines);
    //parse the result string and store information to array
    if ($lines[0] == "SUCCESS") {
    //successful payment
    $ppInfo = array();
    for ($i=1; $i<count($lines); $i++) {
    $parts = split("=", $lines[$i]);
    if (count($parts)==2) {
    $ppInfo[$parts[0]] = urldecode($parts[1]);
    }
    }

    $curtime = gmdate("d/m/Y H:i:s");
    //capture the PayPal returned information as order remarks
    $oremarks =
    "##$curtime##\n".
    "PayPal Transaction Information...\n".
    "Txn Id: ".$ppInfo["txn_id"]."\n".
    "Txn Type: ".$ppInfo["txn_type"]."\n".
    "Item Number: ".$ppInfo["item_number"]."\n".
    "Payment Date: ".$ppInfo["payment_date"]."\n".
    "Payment Type: ".$ppInfo["payment_type"]."\n".
    "Payment Status: ".$ppInfo["payment_status"]."\n".
    "Currency: ".$ppInfo["mc_currency"]."\n".
    "Payment Gross: ".$ppInfo["payment_gross"]."\n".
    "Payment Fee: ".$ppInfo["payment_fee"]."\n".
    "Payer Email: ".$ppInfo["payer_email"]."\n".
    "Payer Id: ".$ppInfo["payer_id"]."\n".
    "Payer Name: ".$ppInfo["first_name"]." ".$ppInfo["last_name"]."\n".
    "Payer Status: ".$ppInfo["payer_status"]."\n".
    "Country: ".$ppInfo["residence_country"]."\n".
    "Business: ".$ppInfo["business"]."\n".
    "Receiver Email: ".$ppInfo["receiver_email"]."\n".
    "Receiver Id: ".$ppInfo["receiver_id"]."\n";

    //Update database using $orderno, set status to Paid
    //Send confirmation email to buyer and notification email to merchant
    //Redirect to thankyou page
    }

    //Payment failed
    else {

    print "Please try again...";
    //Delete order information
    //Redirect to failed page
    }
+1  A: 

Maybe not exactly what you want as an answer, but I just keep recommending this script if you want to use PayPal from PHP:

http://www.micahcarrick.com/04-19-2005/php-paypal-ipn-integration-class.html

Very clean script, which makes it easy to understand the parts of a transaction and edit things.

It also comes with examples provided on how to use the script with PayPal's sandbox. If I remember correctly, you just have to change one variable (and you obviously need an account for the sandbox).

Franz
+2  A: 
vladikoff