2013-11-19 3 views
-1

Я пытаюсь создать php-файл, который будет вызываться paypal checkout, и добавить почтовые сообщения и пароль для пользователей в базу данных sql, чтобы они могли войти в систему.Использование paypal checkout ot добавить пользователя в базу данных sql

Я нашел файл онлайн, но я сделал свою кнопку, чтобы отправить его клиенту. Но я должен делать что-то неправильно.

Любая помощь была бы принята с благодарностью.

<?php 

// read the post from PayPal system and add 'cmd' 
$req = 'cmd=_notify-validate'; 

foreach ($_POST as $key => $value) { 
$value = urlencode(stripslashes($value)); 
$req .= "&$key=$value"; 
} 

// post back to PayPal system to validate 
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); 

// assign posted variables to local variables 
$item_name = $_POST['item_name']; 
$item_number = $_POST['item_number']; 
$payment_status = $_POST['payment_status']; 
$payment_amount = $_POST['mc_gross']; 
$payment_currency = $_POST['mc_currency']; 
$txn_id = $_POST['txn_id']; 
$receiver_email = $_POST['receiver_email']; 
$payer_email = $_POST['payer_email']; 
$password = crypt($_POST['os0']); 
if (!$fp) { 
// HTTP ERROR 
} else { 
fputs ($fp, $header . $req); 
while (!feof($fp)) { 
$res = fgets ($fp, 1024); 
if (strcmp ($res, "VERIFIED") == 0) { 
// 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 

    $table = "checkout"; 
    include("checkout-config.php"); 

// Connect to Mysql Database 
mysql_connect("$dbhost","$dblogin","$dbpass"); 
mysql_select_db($dbname) or die("Unable to select database"); 

mysql_query("INSERT INTO $table 
(email, password) VALUES ('$_GET[payer_email]', '$password')"); 

echo "Paid"; 
//Header("Location: http://www.rollestonelectric.com/paid.php"); 

} 
else if (strcmp ($res, "INVALID") == 0) { 
echo "Unpaid"; 
//Header("Location: http://www.rollestonelectric.com/unpaid.php"); 

// log for manual investigation 
} 
} 
fclose ($fp); 
} 
+0

С одной стороны, ваш первый заголовок '$ header. =" POST/cgi-bin/webscr HTTP/1.0 \ r \ n ";' не может иметь точку. Замените его '$ header =" POST/cgi-bin/webscr HTTP/1.0 \ r \ n ";' –

+0

Спасибо. Я это исправлю. Вы также знаете способ иметь клиентов с перепланировкой PayPal в этот файл после оформления заказа? – rrolleston

+0

Добро пожаловать. К сожалению, я недостаточно разбираюсь в API PayPal. –

ответ

1

Файл, который вы нашли, является файлом прослушивания IPN. IPN: Мгновенный платеж.

Моментальная оплата Уведомление (IPN) является услугой сообщение, которое уведомляет вас о событиях, связанных с операциями PayPal. Вы можете использовать сообщения IPN для автоматизации бэк-офиса и административных функций, таких как , выполняющих заказы, отслеживания клиентов и предоставления статуса и других информации, связанной с транзакциями.

Да, вы на правильном пути. Чтобы вставить данные в базу данных sql после проверки, вам необходимо использовать IPN.

Steps:

  • Включите СПИ в вашем Merchant Account Paypal.
  • Необходимо указать URL-адрес возврата IPN, например: www.yourdomain.com/testlistener.php, где testlistener.php - ваш файл php, который вы нашли в Интернете в своем аккаунте.
  • Пользователь нажимает кнопку PayPal для запуска потока проверки; ваше веб-приложение выполняет вызов API; ваша бэк-офисная система выполняет вызов API; или PayPal отмечает событие.
  • PayPal HTTP POST отправляет вашему слушателю сообщение IPN, которое уведомляет вас об этом событии. Ваш слушатель возвращает пустой ответ HTTP 200.
  • Ваш HTTP-прослушиватель HTTP отправляет полное, неизмененное сообщение обратно в PayPal. Примечание. Это сообщение должно содержать те же поля в том же порядке, что и исходный IPN из PayPal, перед которым предшествует cmd = _notify-validate. Кроме того, это сообщение должно использовать ту же кодировку, что и оригинал.
  • PayPal отправляет одно слово назад - либо VERIFIED (если сообщение соответствует оригиналу), либо INVALID (если сообщение не соответствует оригиналу).

Для получения дополнительной информации обратитесь к этому link.

Смежные вопросы