当SetExpressCheckout.php?paymentType=Sale是表示直接付款
SetExpressCheckout.php里面基本上就等于是商家的购物车,里面有购物的清单总价等等,把这些数据提交到ReviewOrder.php
ReviewOrder.php 一开始就有个判断if(! isset($token)) 由于在跳转到paypal之后返回的页面也是这个所以这里用这个判断来判断是从paypal跳转回来的还是从SetExpressCheckout.php过来的
如果是从SetExpressCheckout.php跳转过来的,首先是把在SetExpressCheckout.php里面的一些参数赋值,比如$paymentAmount=$_REQUEST[‘paymentAmount’];就是把订单总额赋值给paymentAmount。
然后在第SetExpressCheckout.php 88行 $nvpstr=”&Amt=”.$paymentAmount.”&PAYMENTACTION=”.$paymentType.”&ReturnUrl=”.$returnURL.”&CANCELURL=”.$cancelURL .”&CURRENCYCODE=”.$currencyCodeType;
这一行就是把所有的参数按照 参数名=参数值&参数名=参数值 的方法组织成一个字符串。这个地方,如果你们网站上有运费,你就可以按照PayPal在快速支付里面预留的运费参数加上
(这些参数的命名规则你都可以在http://ppdev.ebay.cn/files/developer/PP_NVP_API_Guide_CHN.pdf这个文档里面找到)
紧接着下面第95行
$resArray=hash_call(“SetExpressCheckout”,$nvpstr);
就是通过函数hash_call来call PayPal 当call完之后会立即有返回数据,也就是下面的
$ack = strtoupper($resArray[“ACK”]);
if($ack==”SUCCESS”)
当ack的值是SUCCESS的时候就表示这次API call是成功的,然后就可以把客户端浏览器重定向到PayPal
$token = urldecode($resArray[“TOKEN”]);
$payPalURL = PAYPAL_URL.$token;
header(“Location: “.$payPalURL);
在重定向的时候会把hash_call返回数据中的TOKEN也带上,这样就可以让paypal知道,这个客户是要付是哪比款
当客户来到paypal后,输入信用卡,或者登录paypal,确定后会返回你们的网站的网站,返回的地址就是之前加入到$nvpstr这个支付穿里面的&ReturnUrl=”.$returnURL.”这个$returnURL的值是$returnURL =urlencode($url.’/ReviewOrder.php?currencyCodeType=’.$currencyCodeType.’&paymentType=’.$paymentType.’&paymentAmount=’.$paymentAmount);
也就是会返回到ReviewOrder.php
由于返回的时候会有TOKEN所以会执行110行下面的代码
在130行的时候$resArray=hash_call(“GetExpressCheckoutDetails”,$nvpstr);通过hash_call获取之前客户登录或者输入信用卡时留下的个人信息
这里面就包括了买家的国家,地址,姓名等等
131行把所有的参数都放到session里面$_SESSION[‘reshash’]=$resArray;
然后客户的浏览器被重定向到GetExpressCheckoutDetails.php
GetExpressCheckoutDetails.php这个页面就是把数据显示出来,当然你也可以去掉或者修改这个页面,可以把获得的数据存到你们的数据库里面,或者给这个客户按照他的信息给他创建一个你们网站的帐号。
GetExpressCheckoutDetails.php这个页面的表单指向DoExpressCheckoutPayment.php
DoExpressCheckoutPayment.php就是做最后的付款
36行 $resArray=hash_call(“DoExpressCheckoutPayment”,$nvpstr);
$nvpstr 这个字符串就包括了这笔付款的所以数据
在返回的数据里面resArray就会有这笔交易的详细数据,包括是否成功等等
所需要的各种变量的命名规则和作用都可以在http://ppdev.ebay.cn/files/developer/PP_NVP_API_Guide_CHN.pdf这个文档里面找到
如需转载请注明: 转载自26点的博客
本文链接地址: PayPal_PHP_NVP_Samples 示例代码讲解
转载请注明:26点的博客 » PayPal_PHP_NVP_Samples 示例代码讲解