Подключение PayPal к сайту

chateau

Новичок
Добрый день программистам и не только! У меня возник вопрос который затрагивал практически каждого из Вас, но не каждый нашел решение этому вопросу! И я один из них!

Как подключить PayPal к сайту, т.е обработать ответ с сервера PayPal, полученный после оплаты, и сохранить заказ в базе данных!

Пробовал использовать следующую инструкцию,PayPal на сайт думаю все рабочее, но неделю убил, приходят только письма о ошибке транзакции! Пожалуйста помогите, буду безмерно Вам благодарен!
 

С.

Продвинутый новичок
Не пробовал инструкции с официального сайта следовать?
 

chateau

Новичок
Честно пробовал, ничего не вышло! Может в силу не знания английского языка! Если знаешь, и не трудно скинь пару ссылок может не там ищу! Спасибо!
 

chateau

Новичок
Файл index.php
PHP:
setcookie("cart_id","1",time()+3600);
mysql_connect("localhost","chakopss","069777509");
$db = mysql_select_db("autoforce");

  // checkout.php 
   
  $paypalemail  = "[email protected]";     // e-mail продавца Аккаунт Андрея Виштака
  $currency     = "EUR";              // валюта 
  $cart_id=intval($_COOKIE['cart_id']);  // Идентификатор карзины

  $r=mysql_query("SELECT sum(price*quantity) FROM cart WHERE cart_id=".$cart_id); 
  list ($total)=mysql_fetch_row($r); 
  mysql_free_result($r); 
  $total=number_format($total,2); 
  echo $total;
  echo'

     <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
     <input name="cmd" type="hidden" value="_xclick" />
     <input name="business" type="hidden" value='.$paypalemail.' />
     <input name="item_name" type="hidden" value="Ticketing. Order #5" />
     <input name="item_number" type="hidden" value='.$cart_id.' />
     <input name="amount" type="hidden" value=0.01" />
     <input name="no_shipping" type="hidden" value="1" />
     <input name="rm" type="hidden" value="2" />
     <input name="return" type="hidden" value="http://force-car.com/paypal/payment_success.php" />
     <input name="cancel_return" type="hidden" value="http://site.ru/order/fail/" />
     <input name="currency_code" type="hidden" value='.$currency.' />
     <input name="notify_url" type="hidden" value="http://force-car.com/paypal/payment_success.php" />
     <input type="submit" value="Платить через PayPal" />
';
Файл payment_success.php

PHP:
 // payment_success.php 
  $paypalemail = "[email protected]";     // e-mail продавца 
  $adminemail  = "[email protected]";  // e-mail  администратора 
  $currency    = "USD";              // валюта 

  /******** 
  запрашиваем подтверждение транзакции 
  ********/ 
  $postdata=""; 
  foreach ($_POST as $key=>$value) $postdata.=$key."=".urlencode($value)."&"; 
  $postdata .= "cmd=_notify-validate"; 
  $curl = curl_init("https://www.paypal.com/cgi-bin/webscr"); 
  curl_setopt ($curl, CURLOPT_HEADER, 0); 
  curl_setopt ($curl, CURLOPT_POST, 1); 
  curl_setopt ($curl, CURLOPT_POSTFIELDS, $postdata); 
  curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0); 
  curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); 
  curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 1); 
  $response = curl_exec ($curl); 
  curl_close ($curl); 
  if ($response != "VERIFIED") die("You should not do that ..."); 

  /******** 
  проверяем получателя платежа и тип транзакции, и выходим, если не наш аккаунт 
  в $paypalemail - наш  primary e-mail, поэтому проверяем receiver_email 
  ********/ 
  if ($_POST['receiver_email'] != $paypalemail 
    || $_POST["txn_type"] != "web_accept") 
      die("You should not be here ..."); 
  
  
  
  
mysql_connect("localhost","chakopss","069777509");
$db = mysql_select_db("autoforce");
  /* 
    здесь код, подключающийся к базе данных 
  */ 

  /******** 
    убедимся в том, что эта транзакция не 
    была обработана ранее 
  ********/ 
  $r = mysql_query("SELECT order_id FROM orders WHERE txn_id='".$_POST["txn_id"]."'"); 
  list($duplicate) = mysql_fetch_row($r); 
  mysql_free_result($r); 
  if ($duplicate) die ("I feel like I met you before ..."); 
  /******** 
    проверяем сумму платежа 
  ********/ 
  $cart_id = intval($_POST['item_number']); 
  $r = mysql_query( "SELECT sum(price*quantity), COUNT(cart_id) FROM cart 
                      WHERE cart_id=".$cart_id); 
  list ($total,$nitems) = mysql_fetch_row($r); 

  mysql_free_result($r); 
 
  if (!$nitems) // не удалось восстановить содержимое корзины 
  { 
    mail($adminemail, "IPN error", "Unable to restore cart contents\r\nCart ID: ". 
      $cart_id."\r\nTransaction ID: ".$_POST["txn_id"]); 
    die("I cannot recall what you paid for ... Please contact ".$adminemail); 
  } 
  if ($total != $_POST["mc_gross"] || $_POST["mc_currency"] != $currency) 
  { 
    mail($adminemail, "IPN error", "Payment amount mismatch\r\nCart ID: " 
      . $cart_id."\r\nTransaction ID: ".$_POST["txn_id"]); 
    die("Out of money? Please contact ".$adminemail); 
  } 
  
   $_POST["mc_gross"];
   /******** 
     проверки завершены. формируем заказ 
  ********/ 
  $order_date = date("Y-m-d H:i:s",strtotime ($_POST["payment_date"])); 
  mysql_query("INSERT INTO orders SET 
    txn_id      = '".$_POST["txn_id"]."', 
    order_date  = '$order_date', 
    order_total = $total, 
    email       = '".$_POST["payer_email"]."', 
    first_name  = '".mysql_escape_string($_POST["first_name"])."', 
    last_name   = '".mysql_escape_string($_POST["last_name"])."', 
    street      = '".mysql_escape_string($_POST["address_street"])."', 
    city        = '".mysql_escape_string($_POST["address_city"])."', 
    state       = '".mysql_escape_string($_POST["address_state"])."', 
    zip         = '".mysql_escape_string($_POST["address_zip"])."', 
    country     = '".mysql_escape_string($_POST["address_country"])."'" ); 
  $order_id = mysql_insert_id(); 
  $r = mysql_query("SELECT * FROM cart WHERE cart_id=".$cart_id); 
  while ($row = mysql_fetch_assoc($r)) 
  { 
    mysql_query("INSERT INTO order_details SET 
      order_id = $order_id, 
      item_id = ".$row['item_id'].", 
      price = ".$row['price'].", 
      quantity = ".$row['quantity']); 
  } 
  mysql_free_result($r); 
  mysql_query("DELETE FROM cart WHERE cart_id=".$cart_id); 
  mail($adminemail, "New order", "New order\r\nOrder ID: ". $order_id."\r\nTransaction ID: " 
    .$_POST["txn_id"]); 
  
  
  /* 
    сообщаем, что заказ принят, благодарим за покупку и 
    предлагаем купить еще что-нибудь */ 
  
  
  echo "Thank you for shoping!";
но срабатывает die и выдает ошибку Out of money? Please contact

Помогите!!!
 

С.

Продвинутый новичок
Любую программу после написания надо отлаживать. Никто за тебя это делать не будет.
http://phpfaq.ru/debug
 

Dez

Новичок
Сравнение вещественных чисел в php - проблемная операция.
Преобразуй к строке через number_format, а потом через strcmp
 

freeek

Новичок
ссылка как пример, качаешь сие. и смотришь как там реализовано подключение, делаешь для себя. + делаешь аккаунт в песочнице https://developer.paypal.com/, там тоже должны готовые примеры + все api как и что работает. вариантов несколько есть, подключения. смотришь то какое нужно.
 
Сверху