首頁 >後端開發 >php教程 >php如何接入paypal支付

php如何接入paypal支付

PHPz
PHPz原創
2016-06-06 20:32:215172瀏覽

php如何接入paypal支付

php如何接入paypal支付?

第一步、打开https://www.paypal.com/官网,申请一个paypal账号。

第二步、登录账号,并进入https://developer.paypal.com/developer/accounts/。可以看到你申请账号自动配属的两个测试账号,账号类别分别是:BUSINESS和PERSONAL,PERSONAL的账号里面有$9999。

第三步、给两个账号设置密码,点击账号展开,然后点击Profile,弹出账号信息框,进行设置密码等属性。

第四步、在项目支付页面写入下面代码

(paypal的测试环境域名为www.sandbox.paypal.com,正式域名为www.paypal.com。)

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" name="paypal">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="paypal收款账号">
<input type="hidden" name="item_name" value="商品名称-PCB Online Payment">
<input type="hidden" name="item_number" value="可以写入订单ID(备选项)">
<input type="hidden" name="cancel_return" value="取消支付返回url">    
<input type="hidden" name="notify_url" value="支付完成返回url">   
<input type="hidden" name="return" value="支付完成返回url">  
<!-- 货币种类,USD为美元 -->
<input type="hidden" name="currency_code" value="USD">
<!-- 支付金额 -->
<input type="hidden" name="amount" value="8.88">
<input type="submit" value="立即支付" class="sbtn4" />
</form>

第五步、处理返回信息

确认“payment_status”为“Completed”,因为系统也会 为其他结果(如“Pending”或“Failed”)发送 IPN。

检查“txn_id”是否未重复,以防止欺诈者重复使用旧的已 完成的交易。

验证“receiver_email”是已在您的PayPal账户中注册的电子邮件地址,以防止将付款发送到欺诈者的账 户 。

检查其他交易详情(如物品号和价格),以确认价格未改变完成了以上检查后,您可以使用 IPN 数据更新您的数据库,并处理购物。

如果收到“无效”通知,则应将其视为可疑通知,并应对其进行调查。

/**
*处理返回信息的方法
*/
public function notify(){
        if ($this->user_id == false){
            $this->redirect(&#39;user/login&#39;);
        }
        $result = $_POST;
        $order_id = $result[&#39;item_number&#39;];
        if ($order_id){
            $order = D(&#39;order&#39;)->find($order_id);
            $this->assign(&#39;order_num&#39;,$order[&#39;order_num&#39;]);
            //1、先更新订单状态
            if (($order[&#39;pay_status&#39;] == 0) && ($result[&#39;payment_status&#39;] == &#39;Completed&#39;) ){// 支付成功
                $this->update_order($result);
            }
            //2、才能添加支付记录
            if ($order[&#39;pay_status&#39;] == 0){
                $this->add_payment_logs($result);
            }
        }
        $this->assign(&#39;order_id&#39;,$order_id);
        $this->assign(&#39;payment_status&#39;,$result[&#39;payment_status&#39;]);
        $this->assign(&#39;payment_gross&#39;,$result[&#39;payment_gross&#39;]);
        $this->assign(&#39;seo_title&#39;,&#39;notify&#39;);
        $this->display();
    }

更多相关知识,请访问PHP中文网

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn