[英]Add paypal payment confirmation to mysql after form is submitted
我有一個非常簡單的在線html表單。 用戶填寫表格,並在提交時將信息插入到MySQL數據庫中,然后將其重定向到PayPal以完成付款。 問題在於數據庫沒有有關他們是否實際完成付款的任何信息。
解決方案是使用IPN。 我已經在網上搜索了內容,並且在教程中找到了管,但是它太復雜了,我無法實現IPN來確認向MySQL付款。
請問是否有人可以幫助我將其組合在一起。
不太復雜。
您已經有一個用於測試的沙箱帳戶了嗎? 如果沒有,請在sandbox.paypal.com上注冊賣方/買方測試帳戶。 不確定兩者可能都需要不同的電子郵件地址。
1.)在提交表單中,輸入IPN腳本的路徑,例如pp.notifiy.php
<input type="hidden" name="notify_url" value="http://my.test/pp.notifiy.php" />
另外,在您的PayPal商家/沙盒帳戶設置中,指定監聽器的URL。 偵聽器腳本不得進行防火牆保護。 它將從PayPal收到$ _POST。
2.)付款成功后,
VERIFIED
以處理訂單和更新數據庫。 我更喜歡cURL解決方案,因為PayPal最近進行了更改,這引起了一些麻煩,使用cURL解決方案對我來說效果很好,尤其是在沙盒測試時。 需要cURL擴展名才能在PHP中激活 。
對於cURL解決方案,請閱讀有關PayPal Developer的更多信息: 如何處理即時付款通知(IPN)消息 ; 我不建議使用的其他解決方案使用fsockopen 。
這是我的工作cURL偵聽器腳本(pp.notify.php)的一部分
#$pp_url = "https://www.paypal.com/cgi-bin/webscr";
$pp_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
// build the request / postback
$req = 'cmd=_notify-validate';
foreach($_POST AS $k => $v) {
$v=urlencode(stripslashes($v));
$req.="&$k=$v";
}
// post back to PayPal system to validate using curl
$ch = curl_init($pp_url);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
if(!($res=curl_exec($ch)))
{
#error_log("Got " . curl_error($ch) . " when processing IPN data");
curl_close($ch);
exit;
}
$res = trim($res);
curl_close($ch);
// inspect IPN validation result and act accordingly
if(strcmp($res,"VERIFIED")==0)
{
// The IPN is verified
// update your db/process order...
} else if (strcmp($res,"INVALID")==0)
{
// IPN invalid, log for manual investigation
}
這也將在沙盒上工作。 所以最好做一些測試。 您應該獲得VERIFIED
,然后處理訂單/更新數據庫。 如果一切正常,請從沙盒切換到真正的PayPal,最好也至少測試一次。
我希望這對入門有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.