PayPal checkout example in PHP. After payment is done PayPal IPN service sends notification to notify_url
(or it can be set in PayPal profile).
Created
August 2, 2016 18:07
-
-
Save tetafro/e609163c825776ff3cc651027c18c3b1 to your computer and use it in GitHub Desktop.
PayPal PHP checkout example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> | |
<title>PayPal shop</title> | |
</head> | |
<body> | |
<table> | |
<tr> | |
<th>Товар</th> | |
<th>Цена</th> | |
<th>Купить</th> | |
</tr> | |
<tr> | |
<td>Коробка</td> | |
<td>10$</td> | |
<td> | |
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" name="form-pp"> | |
<input type="hidden" name="business" value="[email protected]"> | |
<input type="hidden" name="image_url" value="http://paypal.local/static/logo.png"> | |
<input type="hidden" name="charset" value="utf8"> | |
<input type="hidden" name="item_name" value="Коробка"> | |
<input type="hidden" name="item_number" value="1"> | |
<input type="hidden" name="amount" value="10"> | |
<input type="hidden" name="currency_code" value="USD"> | |
<input type="hidden" name="cmd" value="_xclick"> | |
<input type="hidden" name="no_note" value="1"> | |
<input type="hidden" name="no_shipping" value="1"> | |
<input type="hidden" name="return" value="http://10.10.10.10/payment-return.php"> | |
<input type="hidden" name="rm" value="2"> | |
<!-- This can be set in PayPal profile --> | |
<!-- <input type="hidden" name="notify_url" value="http://10.10.10.10/payment-listner.php"> --> | |
<input type="hidden" name="cancel_return" value="http://10.10.10.10/payment-fail.php"> | |
<input type="submit" value="buy"> | |
</form> | |
</td> | |
</tr> | |
</table> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
echo 'The transaction has failed'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$postdata = '' | |
$post_json = []; | |
foreach($_POST as $key => $value) { | |
$postdata .= $key . '=' . urlencode($value) . '&'; | |
} | |
$postdata .= 'cmd=_notify-validate'; | |
$curl = curl_init('https://www.sandbox.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); | |
if($response == 'VERIFIED') { | |
file_put_contents('log.txt', $_POST['txn_id'].''\n', FILE_APPEND); | |
} | |
curl_close($curl); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$txn_string = file_get_contents('log.txt'); | |
$txn_array = explode("\n", $txn_string); | |
if(in_array($_POST['txn_id'], $txn_array)) | |
echo 'Success'; | |
else | |
echo 'Unknown transaction'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Naming file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment