| /*** @author xxxxxxxx
 * @brief 简介:
 * @date 15/9/2
 * @time 下午5:00
 */
 use PayPalApiPayer;
 use PayPalApiItem;
 use PayPalApiItemList;
 use PayPalApiDetails;
 use PayPalApiAmount;
 use PayPalApiTransaction;
 use PayPalApiRedirectUrls;
 use PayPalApiPayment;
 use PayPalExceptionPayPalConnectionException;
 
 require "app/start.php"; if (!isset($_POST['product'], $_POST['price'])) {     die("lose some params"); } $product = $_POST['product']; $price = $_POST['price']; $shipping = 2.00; //运费  $total = $price + $shipping;  $payer = new Payer(); $payer->setPaymentMethod('paypal');  $item = new Item(); $item->setName($product)     ->setCurrency('USD')     ->setQuantity(1)     ->setPrice($price);  $itemList = new ItemList(); $itemList->setItems([$item]);  $details = new Details(); $details->setShipping($shipping)     ->setSubtotal($price);  $amount = new Amount(); $amount->setCurrency('USD')     ->setTotal($total)     ->setDetails($details);  $transaction = new Transaction(); $transaction->setAmount($amount)     ->setItemList($itemList)     ->setDescription("支付描述内容")     ->setInvoiceNumber(uniqid());  $redirectUrls = new RedirectUrls(); $redirectUrls->setReturnUrl(SITE_URL . '/pay.php?success=true')     ->setCancelUrl(SITE_URL . '/pay.php?success=false');  $payment = new Payment(); $payment->setIntent('sale')     ->setPayer($payer)     ->setRedirectUrls($redirectUrls)     ->setTransactions([$transaction]);  try {     $payment->create($paypal); } catch (PayPalConnectionException $e) {     echo $e->getData();     die(); }  $approvalUrl = $payment->getApprovalLink(); header("Location: {$approvalUrl}");
 
 checkout.php通过表单提交上来的参数对支付具体细节和参数进行初始化和设置。这里只列出了常用的部分。paypal提供了很多参数设置。具体更丰富的可以自己参考paypal官方开发者文档。 checkout.php设置完参数之后。会生成一个支付链接。用header跳转到这个支付链接(就是paypal的支付页面)到这个支付页面上面就可以用你的sandbox提供的buyer账号去支付了。截图如下: 
 用buyer账号支付完成之后。去看看你的sandbox的商家账户余额吧。就会发现已经收到了扣除手续费外的钱了。 这里支付成功 或者 失败后还有一个回调的处理。回调处理的php文件再上面的checkout.php里面的setReturnUrl处设置。这里设置的是/pay.php?success=true 接下来我们来看看pay.php是怎么简单处理回调的。先贴上pay.php的代码: php require 'app/start.php';
 use PayPalApiPayment;
 use PayPalApiPaymentExecution;
 
 if(!isset($_GET['success'], $_GET['paymentId'], $_GET['PayerID'])){
 die();
 }
 
 if((bool)$_GET['success']=== 'false'){
 
 echo 'Transaction cancelled!';
 die();
 }
 
 $paymentID = $_GET['paymentId'];
 $payerId = $_GET['PayerID'];
 
 $payment = Payment::get($paymentID, $paypal);
 
 $execute = new PaymentExecution();
 $execute->setPayerId($payerId);
 
 try{
 $result = $payment->execute($execute, $paypal);
 }catch(Exception $e){
 die($e);
 }
 echo '支付成功!感谢支持!';
 
 好了。到这里一个简单的paypal支付的demo其实已经走通了。懂得支付原理之后、想要再你自己的项目里面进行更丰富的扩展、就去paypal的官方文档查看更多具体的开发项设置。包括交易明细的获取等等都是可以实现的。这里就不具体讲下去了。                          (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |