时有可能使用卷曲和PayPal的开发者沙盒?当我尝试此代码它的print_r($线)说;我需要登录到沙盒,我怎么可以把它送我的浏览器的cookie?

这个代码是从 HTTP://leepeng.blogspot。 COM / 2006/04 /标准贝宝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
    } 
有帮助吗?

解决方案

此应该工作:     

$tid = $_GET['tx'];
$auth_token = "zzzzzzzzzzzzzzzzzzzz";
$paypal_url = "www.sandbox.paypal.com";

$url = "https://" . $paypal_url . "/cgi-bin/webscr";

$post_vars = "cmd=_notify-synch&tx=" . $tid . "&at=" . $auth_token;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'cURL/PHP');

$fetched = curl_exec($ch);



$lines = explode("\n", $fetched);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
for ($i=1; $i<count($lines);$i++){
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
$firstname = $keyarray['first_name'];
$lastname = $keyarray['last_name'];
$itemname = $keyarray['num_cart_items'];
$amount = $keyarray['mc_gross'];

echo ("<h2>Thank you for your purchase!</h2>");

}
else if (strcmp ($lines[0], "FAIL") == 0) {
    echo ("<h2>Sorry, something went wrong</h2>");

// log for manual investigation

}

另外$ _GET [ 'TX']查询停止工作〜5分钟后

其他提示

也许不是正是你想要的是一个答案,但我只是不停地推荐这个剧本,如果你想使用PayPal从PHP:

HTTP://www.micahcarrick的.com / 2005年4月19日/ PHP-贝宝-IPN-集成-class.html

非常干净的脚本,这使得它很容易理解的交易和编辑的东西的部分。

它还配备了提供有关如何使用PayPal的沙箱使用的脚本示例。如果我没有记错,你只需要改变一个变量(和你显然需要对沙盒的帐户)。

如果用java与贝宝PDT任何人.. 阿帕奇Commons的HttpClient 4.1这里使用..

// Imports ----------------
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
// end of imports ---------------

            HttpClient httpclient = new DefaultHttpClient();  
            HttpParams myParams = httpclient.getParams();
            HttpConnectionParams.setConnectionTimeout(myParams,40000);
            HttpConnectionParams.setSoTimeout(myParams,40000);
            HttpPost httppost = new HttpPost("https://www.sandbox.paypal.com/cgi-bin/webscr");             
            httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");

         try {  
                // Add your data  

                String txToken = "xxxxxxxxxxxx";
                String authToken = "xxxxxxxxxxxxxxxxxxxxxxxxx";                 

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
                nameValuePairs.add(new BasicNameValuePair("cmd", "_notify-synch"));  
                nameValuePairs.add(new BasicNameValuePair("tx", txToken));  
                nameValuePairs.add(new BasicNameValuePair("at", authToken));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                HttpResponse response = httpclient.execute(httppost);  

                InputStream is = response.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder str = new StringBuilder();
                String line = null;

                while((line = reader.readLine()) != null){
                     str.append(line + "\n");
                }
                is.close();
                     String responseText = str.toString();
                     logger.info("----------------------------------------------------");
                     logger.info("RESPONSE : " + responseText);
                     logger.info("----------------------------------------------------");     
                     getContext().getResponse().getWriter().write(responseText);                


             }
             catch (Exception e) {  
                     logger.info("----------------------------------------------------");
                     logger.info("ERROR : " + e.getMessage());
                     logger.info("----------------------------------------------------");    
             }   
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top