PHP中集成PayPal标准支付,php集成paypal标准
PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下
1,在网站的结账页面,设置一个提交到PayPal网站的form,里面有一些金额,商品名称,商家收款账号、结账成功后返回URL等内容,
2,用户结账时,通过点击‘使用PayPal结账’的按钮到达PayPal的结账页面,输入自己的PayPal用户名和密码并确认支付
3,PayPal会根据是否支付成功来决定返回网站的哪个页面,并在后台对网站的某个页面发起post请求,这个动作称作IPN,告诉网站这笔付款的到账情况,比如completed即为完成付款
4,网站收到PayPal的notify通知后,即可给用户发货或者其他的处理逻辑
这里有一张图来解释
![paypal_process_thumb[1] paypal_process_thumb[1]](http://www.bkjia.com/uploads/allimg/160217/1635241503-0.gif)
更为简单的流程图
![download_thumb[3] download_thumb[3]](/static/imghw/default1.png)
Copier après la connexion
Copier après la connexion
记录一下代码:
checkout.php 这个页面其实可以是HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <form action= "https://www.paypal.com/cgi-bin/webscr" method= "post" >
<input type= "hidden" name= "ev_csrf" value= "9878824eb2cf4f1075dfa43c216d7cec" >
<input type= "hidden" name= "cmd" value= "_cart" >
<input type= "hidden" name= "upload" value= "1" >
<input type= "hidden" name= "charset" value= "utf-8" >
<input type= "hidden" name= "currency_code" value= "USD" >
<input type= "hidden" name= "business" value=sales@test.com>
<input type= "hidden" name= "cancel_return" value=”http:
<input type= "hidden" name= "return" value=”http:
<input type= "hidden" name= "notify_url" value= "http://www.test.com/notify.php" >
<input type= "hidden" name= "custom" value= "userid:31;ip:182.114.240.221" >
<input type= "hidden" name= "item_number" value= "ARO0101" >
<input type= "hidden" name= "item_name" value= "AD182m" >
<input type= "hidden" name= "quantity" value= "1" >
<input type= "hidden" name= "amount" value= "70" >
<input type= "submit" value= "Checkout with PayPal" >
</form>
|
Copier après la connexion
1 | 这个form中包含了一些PayPal支付必须要加的项,需要注意的是notify.php是PayPal会在后台进行调用的
|
Copier après la connexion
1 | notify.php这个页面有两个功能,一个是接收PayPal的post内容并加上标签返回,一个是接收到PayPal的认证信息之后进行网站内部的逻辑处理
|
Copier après la connexion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $req = 'cmd=_notify-validate' ;
foreach ( $_POST as $key => $value ) {
$value = urlencode( stripslashes ( $value ));
$req .= "&$key=$value" ;
}
$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);
if (! $fp ) {
} else {
fputs ( $fp , $header . $req );
while (! feof ( $fp )) {
$res = fgets ( $fp , 1024);
if ( strcmp ( $res , "VERIFIED" ) == 0) {
}
else if ( strcmp ( $res , "INVALID" ) == 0) {
}
}
fclose ( $fp );
}
|
Copier après la connexion
http://www.bkjia.com/PHPjc/1100147.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1100147.htmlTechArticlePHP中集成PayPal标准支付,php集成paypal标准 PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下 1,在网...