135-1821-9792

PHP语言开发Paypal支付demo的具体实现

一、开发前准备

创新互联建站网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站设计、成都做网站重庆APP开发公司以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联建站深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

https://developer.paypal.com/  到paypal的开发者官网注册开发者账号。

用账号登录之后、点击导航上面的 dashboard、进入dashboard面版。如下截图、后续的操作都是在这个面板中操作。

上面截图中菜单 Sandbox下面的Accounts里面能看到你的 sandbox测试的买家账号和卖家账号。2个测试账号里面都有profile选项里面有changepassword可以设置虚拟账号的密码。

上面截图中菜单Sandbox下面的Transactions就是你的交易记录。

点击截图页面右上角的 Create App按钮。创建一个应用。创建好后、会给你提供一个Client ID 和 Secret。这两个可以配置为php常量后面开发中会用到。

二、进入支付Demo开发

随便在本地建立一个开发代码根目录、先建立一个index.html里面就放一个简单的产品名称和产品价格两个input项即可、代码和截图如下:

  
 
  1. DOCTYPE html> 
  2.  
  3.      
  4.          
  5.         支付页面title> </li> <li>    head> </li> <li>    <body> </li> <li>        <div> </li> <li>            <form action="checkout.php" method="post" autocomplete="off"> </li> <li>                <label for="item"> </li> <li>                    产品名称 </li> <li>                    <input type="text" name="product"> </li> <li>                label> </li> <li>                <br> </li> <li>                <label for="amount"> </li> <li>                    价格 </li> <li>                    <input type="text" name="price"> </li> <li>                label> </li> <li>                <br> </li> <li>                <input type="submit" value="去付款"> </li> <li>            form> </li> <li>        div> </li> <li>    body> </li> <li>html> </li> </ol></pre><p>输入产品名称 和 价格。点击去付款就会到paypal的付款页面。用你的sandbox测试买家账号去付款。就会发现付款成功。然后登陆你的测试卖家账号。会发现卖家账号已经收到付款。当然这里会扣除paypal收取的手续费。手续费收的是卖家的。</p><p>下面来具体看看php是怎么实现的。首先先要把paypal提供的 php-sdk给弄到你的代码目录中来。这里介绍使用php的包管理器composer来获取***sdk、当然你可以可以从github等其他渠道获取***的paypal php-sdk。</p><p>默认你的电脑已经安装composer了。如果没有自己去度娘或者google下composer安装。</p><p>然后在你的代码根目录写一个composer.json文件来获取包内容。json文件代码如下:</p><p>{<br />     "require" : { "paypal/rest-api-sdk-php" : "1.5.1"<br />     }<br /> }</p><p>这里如果是 linux/unix系统就直接再根目录执行composer install来获取包内容。</p><p>安装好之后。根目录下面会产生一个vendor目录。里面有composer 和 paypal两个子目录。composer里面实现了自动加载、paypal则是你的sdk内容。</p><p>接 下来我们来写一个公共文件(这里默认用 app/start.php、你的项目中可以自定义)、其实里面就只是实现了 sdk的autoload.php自动加载 和 创建刚才上面的的client id  和 secret生成的paypal支付对象实例。start.php代码如下:</p><p> php<br /></p><p>require "vendor/autoload.php"; //载入sdk的自动加载文件 define('SITE_URL', 'http://www.paydemo.com'); //网站url自行定义 //创建支付对象实例 $paypal = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( '你的Client ID' '你的secret'<br />     )<br /> );<br /></p><p>接下来就来实现表单中提交的处理文件 checkout.php。代码内容如下:</p><p> php</p><p>/**<br /> * @author xxxxxxxx<br /> * @brief 简介:<br /> * @date 15/9/2<br /> * @time 下午5:00<br /> */<br /> use \PayPal\Api\Payer;<br /> use \PayPal\Api\Item;<br /> use \PayPal\Api\ItemList;<br /> use \PayPal\Api\Details;<br /> use \PayPal\Api\Amount;<br /> use \PayPal\Api\Transaction;<br /> use \PayPal\Api\RedirectUrls;<br /> use \PayPal\Api\Payment;<br /> use \PayPal\Exception\PayPalConnectionException;</p><p> 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}");<br /></p><p>checkout.php通过表单提交上来的参数对支付具体细节和参数进行初始化和设置。这里只列出了常用的部分。paypal提供了很多参数设置。具体更丰富的可以自己参考paypal官方开发者文档。</p><p>checkout.php设置完参数之后。会生成一个支付链接。用header跳转到这个支付链接(就是paypal的支付页面)到这个支付页面上面就可以用你的sandbox提供的buyer账号去支付了。截图如下:</p><p>用buyer账号支付完成之后。去看看你的sandbox的商家账户余额吧。就会发现已经收到了扣除手续费外的钱了。</p><p>这里支付成功 或者 失败后还有一个回调的处理。回调处理的php文件再上面的checkout.php里面的setReturnUrl处设置。这里设置的是/pay.php?success=true</p><p>接下来我们来看看pay.php是怎么简单处理回调的。先贴上pay.php的代码:</p><p>php</p><p>require 'app/start.php';</p><p> use PayPal\Api\Payment;<br /> use PayPal\Api\PaymentExecution;</p><p> if(!isset($_GET['success'], $_GET['paymentId'], $_GET['PayerID'])){<br />     die();<br /> }</p><p> if((bool)$_GET['success']=== 'false'){</p><p>     echo 'Transaction cancelled!';<br />     die();<br /> }</p><p> $paymentID = $_GET['paymentId'];<br /> $payerId = $_GET['PayerID'];</p><p> $payment = Payment::get($paymentID, $paypal);</p><p> $execute = new PaymentExecution();<br /> $execute->setPayerId($payerId);</p><p> try{<br />     $result = $payment->execute($execute, $paypal);<br /> }catch(Exception $e){<br />     die($e);<br /> }<br /> echo '支付成功!感谢支持!';<br /></p><p>好了。到这里一个简单的paypal支付的demo其实已经走通了。懂得支付原理之后、想要再你自己的项目里面进行更丰富的扩展、就去paypal的官方文档查看更多具体的开发项设置。包括交易明细的获取等等都是可以实现的。这里就不具体讲下去了。</p> <br> 本文题目:PHP语言开发Paypal支付demo的具体实现 <br> 标题URL:<a href="http://www.wtcwzsj.com/article/dhpeese.html">http://www.wtcwzsj.com/article/dhpeese.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/dppoego.html">ecshop功能</a> </li><li> <a href="/article/dppoegp.html">怎么删除程序</a> </li><li> <a href="/article/dppoepc.html">一招教你如何隐藏ip地址?服务器隐藏ip地址</a> </li><li> <a href="/article/dppoejc.html">描述FTP服务器的安装步骤?(怎么在服务器上安装软件)</a> </li><li> <a href="/article/dppoegj.html">查看MSSQL数据库版本的方法(mssql查看数据库版本)</a> </li> </ul> </div> </div> <!-- end #bd --> <div class="c"></div> <!-- begin #fd --> <div id="fd" class="index-fd pr"> <div class="map-bg3"></div> <div class="wp"> <div class="fd-top"> <dl> <dt>关于我们</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/about#whous">我们是谁</a></li> <li><a href="http://www.wtcwzsj.com/about#ourcus">我们服务的客户</a></li> <li><a href="http://www.wtcwzsj.com/about#ourteam">我们的团队</a></li> </ul> </dd> </dl> <dl> <dt>我们的服务</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/service#webbuit">网站建设</a></li> <li><a href="http://www.wtcwzsj.com/service#weiweb">H5响应式 交互网站</a></li> <li><a href="http://www.wtcwzsj.com/service#webmobel">移动端 & 微网站定制</a></li> <li><a href="http://www.wtcwzsj.com/service#servweb">服务流程</a></li> <li><a href="http://www.wtcwzsj.com/service#solution">行业解决方案</a></li> </ul> </dd> </dl> <dl> <dt>网站建设案例</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/case/">公司集团</a></li> <li><a href="http://www.wtcwzsj.com/case/">数码电子科技</a></li> <li><a href="http://www.wtcwzsj.com/case/">建筑与设计</a></li> <li><a href="http://www.wtcwzsj.com/case/">安防门禁</a></li> <li><a href="http://www.wtcwzsj.com/case/">管理咨询美容</a></li> <li><a href="http://www.wtcwzsj.com/case/">外贸行业</a></li> </ul> </dd> </dl> <dl> <dt>新闻动态</dt> <dd> <ul class="ul-fd"> <li><a href="/news/2.html">温岭网站建设</a></li><li><a href="/news/3.html">温岭网站制作</a></li><li><a href="/news/4.html">温岭网站设计</a></li> </ul> </dd> </dl> <dl> <dt>联系我们</dt> <dd class="pr"> <p><a href="http://www.wtcwzsj.com/news/" class="weixin"></a><a href="http://www.wtcwzsj.com/news/" class="sina"></a><span class="weixin-pic"><img src="/Public/Home/pic/ewm.jpg"></span></p> <p><b class="tel">135-1821-9792</b></p> <h5>公司服务热线</h5> </dd> </dl> </div> <div class="link"> 友情链接: <a href="http://www.pjtfdj.com/" title="成都广告设计公司" target="_blank">成都广告设计公司</a>   <a href="http://www.sxjierui.cn/" title="sxjierui.cn" target="_blank">sxjierui.cn</a>   <a href="http://www.cdkjz.cn/fangan/jianshe/" title="网站报价方案" target="_blank">网站报价方案</a>   <a href="http://www.cdhuace.com/faguangzi/wbfgz.html" title="led无边发光字" target="_blank">led无边发光字</a>   <a href="http://www.slcr8.cn/" title="成都定制无纺布手提袋" target="_blank">成都定制无纺布手提袋</a>   <a href="http://www.myfdjwx.com/" title="myfdjwx.com" target="_blank">myfdjwx.com</a>   <a href="http://www.baozgs.com/" title="成都食品包装设计" target="_blank">成都食品包装设计</a>   <a href="http://www.knryz.com/" title="宠物用品销售公司" target="_blank">宠物用品销售公司</a>   <a href="http://www.leshanfdj.com/" title="乐山发电机" target="_blank">乐山发电机</a>   <a href="http://www.wjzwz.com/" title="温江网站建设" target="_blank">温江网站建设</a>    </div> </div> <div class="fd-copy"> <div class="wp"> <p><span style="color:#CCCCCC;">Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有</span> <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#CCCCCC;">蜀ICP备19037934号</a></p> </div> </div> </div> <div class="side"> <ul> <li><a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" target="_blank"> <div class="sidebox"><img src="/Public/Home/pic/side_icon02.png">在线咨询</div> </a></li> <li><a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" target="_blank"> <div class="sidebox"><img src="/Public/Home/pic/side_icon01.png">在线咨询</div> </a></li> <li><a href="tel:135-1821-9792"> <div class="sidebox"><img src="/Public/Home/pic/side_icon03.png"><span style="font-size:14px">135-1821-9792</span></div> </a></li> </ul> </div> <div class="side2"> <ul> <li><a href="http://www.wtcwzsj.com/news/"><img src="/Public/Home/pic/r_icon1.png" alt="温岭网站建设"></a> <div class="weixin"><em></em><img src="/Public/Home/pic/ewm.jpg" alt="温岭网站建设"></div> </li> <li><a href="javascript:goTop();" class="sidetop"><img src="/Public/Home/pic/r_icon2.png"></a></li> </ul> </div> <div class="fot"> <ul> <li> <a href="https://p.qiao.baidu.com/cps/mobileChat?siteId=11284691&userId=6256368&type=1&reqParam=%20{%22from%22:0,%22sessionid%22:%22%22,%22siteId%22:%2211284691%22,%22tid%22:%22-1%22,%22userId%22:%226256368%22,%22ttype%22:1,%22siteConfig%22:%20{%22eid%22:%226256368%22,%22queuing%22:%22%22,%22siteToken%22:%226ce441ff9e2d6bedbdfc2a4138de449e%22,%22userId%22:%226256368%22,%22isGray%22:%22false%22,%22wsUrl%22:%22wss://p.qiao.baidu.com/cps3/websocket%22,%22likeVersion%22:%22generic%22,%22siteId%22:%2211284691%22,%22online%22:%22true%22,%22webRoot%22:%22//p.qiao.baidu.com/cps3/%22,%22bid%22:%22160142915792139572%22,%22isSmallFlow%22:0,%22isPreonline%22:0,%22invited%22:0%20},%22config%22:%20{%22themeColor%22:%224d74fa%22%20}%20}&appId=&referer=&iswechat=0&expectWaiter=-1&openid=null&otherParam=null&telephone=null&speedLogId=null&eid=null&siteToken=6ce441ff9e2d6bedbdfc2a4138de449e" target="_blank"> <img src="/Public/Home/pic/fot1.png" alt=""> <p>在线咨询</p> </a> </li> <li> <a href="tel:18980820575" target="_blank"> <img src="/Public/Home/pic/fot2.png" alt=""> <p>拨打电话</p> </a> </li> </ul> </div> <script type="text/javascript" src="/Public/Home/pic/jquery.js"></script> <script type="text/javascript" src="/Public/Home/pic/lib.js"></script> </body></html> <script> $(".con img").each(function(){ var src = $(this).attr("src"); //获取图片地址 var str=new RegExp("http"); var result=str.test(src); if(result==false){ var url = "https://www.cdcxhl.com"+src; //绝对路径 $(this).attr("src",url); } }); window.onload=function(){ document.oncontextmenu=function(){ return false; } } </script>