php中的购物车以及如何将PayPal集成到其中?

问题描述:

I want to develop a shopping cart in php. I also want to integreate online payment facility using paypal. Which allows payment thrugh credit card and decbit card.

So Please tell me how to integreate paypal in my own shopping cart to achive secure transaction?

Thank You!

我想在php中开发购物车。 我还希望使用paypal集成在线支付工具。 什么允许通过信用卡和借记卡支付。 p>

所以请告诉我如何在我自己的购物车中集成paypal以实现安全交易 ? p>

谢谢! p> div>

Paypal offers various APIs and services so you need to pick, or more, and them implement it according to its API.

You, or if its the case your client, will need to have an account at PayPal, atfer that, Paypal will provide you with the proper documentation to log to their system and query the account for balance, validation, etc...

This is a sample (working code) to interact with PayPal IPN:

<?php
error_reporting(E_ALL ^ E_NOTICE);

// devdaily.com paypal php ipn example.
// version 1.0
// this example built on the paypal php ipn example, with bug fixes,
// and no need for ssl.

$header = "";
$emailtext = "";

// read the post from paypal and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc'))
{
  $get_magic_quotes_exits = true;
}

// handle escape characters, which depends on setting of magic quotes
foreach ($_POST as $key => $value)
{
  if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1)
  {
    $value = urlencode(stripslashes($value));
  }
  else
  {
    $value = urlencode($value);
  }
  $req .= "&$key=$value";
}

// post back to paypal to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0
";
$header .= "Content-Type: application/x-www-form-urlencoded
";
$header .= "Content-Length: " . strlen($req) . "

";

// here you can use ssl, or not
// $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

// process validation from paypal
// TODO: This sample does not test the http response code.
// All HTTP response codes must be handles or you should use an HTTP
// library, such as cUrl.

if (!$fp)
{
  // HTTP ERROR
}
else
{
  // NO HTTP ERROR
  fputs ($fp, $header . $req);
  while (!feof($fp))
  {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0)
    {
      // get variables from the paypal post to us
      // see these pages for possible variables:
      // https://developer.paypal.com/us/cgi-bin/devscr
      // https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=develo...

      // payment info
      $payment_status = $_POST['payment_status'];
      $payment_amount = $_POST['mc_gross'];
      $payment_currency = $_POST['mc_currency'];
      $txn_id = $_POST['txn_id'];

      // product info
      $item_name = $_POST['item_name'];
      $item_number = $_POST['item_number'];

      // buyer info
      $payer_email = $_POST['payer_email'];
      $first_name = $_POST['first_name'];
      $last_name = $_POST['last_name'];
      $address_city = $_POST['address_city'];
      $address_state = $_POST['address_state'];
      $address_country = $_POST['address_country'];

      // receiver_email, that's our email address
      $receiver_email = $_POST['receiver_email'];

      // put your actual email address here
      $our_email = 'foobar@example.com';

      // if all these conditions are true, send the email
      // note: should also verify that $txn_id was not used before
      if (($payment_status == 'Completed') &&
         ($receiver_email == $our_email) &&
         ($payment_amount == $amount_they_should_have_paid ) &&
         ($payment_currency == "USD"))
      {
        foreach ($_POST as $key => $value)
        {
          $emailtext .= $key . " = " .$value ."

";
        }
        mail($payer_email, "Live-VERIFIED IPN", $emailtext . "

" . $req);
      }
    }
    else if (strcmp ($res, "INVALID") == 0)
    {
      // If 'INVALID', send an email. TODO: Log for manual investigation.
      foreach ($_POST as $key => $value)
      {
        $emailtext .= $key . " = " .$value ."

";
      }
      mail($payer_email, "Live-INVALID IPN", $emailtext . "

" . $req);
    }
  }
}
fclose ($fp);
?>

PS: This is based on PayPal developer website, from one API available.. there are many! ;) Please visit PayPal Development for more information!