paypal, php - 将贝宝支付整合到网站中

Posted

技术标签:

【中文标题】paypal, php - 将贝宝支付整合到网站中【英文标题】:paypal, php - integrate a paypal payment into a website 【发布时间】:2011-11-03 13:00:53 【问题描述】:

祝大家有美好的一天。

我有一个预订网站。这里我需要集成一个paypal支付。

场景是这样的:X 进入网站,填写一个包含很多细节的表格(姓名、期间、房间类型,随便什么......大约 20 个字段)。详细信息将发送到计算价格的脚本。

现在我需要的是让用户付费。我必须使用授权和捕获来执行此操作(当然是为了能够在时限内取消付款)。

第一次尝试是生成一个立即付款按钮。但是这种请求是固定价格的(我的也是生成的)。

其次是添加到购物车按钮。一样的。

经过一些研究,我发现我需要快速结帐(我认为...不确定)。我使用了https://www.paypal-labs.com/integrationwizard/ecpaypal/code.php 的代码生成器。

问题是这个还需要一些运输细节和其他无用的东西。我也看不到我在哪里填写访问者姓名/信用/其他...

我只想要简单的付款。无论如何我可以使用表格并将值发送到指定的地址吗?或类似的东西?如您所知...任何普通的 API。

【问题讨论】:

【参考方案1】:

我最近做了这个。您可以使用 PayPal 的 xclick 按钮将自定义数据(即价格和运费)发送到 PayPal。然后客户将通过 PayPal 付款并向您选择的服务器上的文件发送即时付款通知,然后使用 IPN 验证数据并按照您的喜好处理订单。

<form action="https://secure.paypal.com/uk/cgi-bin/webscr" method="post" name="paypal" id="paypal">
    <!-- Prepopulate the PayPal checkout page with customer details, -->
    <input type="hidden" name="first_name" value="<?php echo Firstname?>">
    <input type="hidden" name="last_name" value="<?php echo Lastname?>">
    <input type="hidden" name="email" value="<?php echo Email?>">
    <input type="hidden" name="address1" value="<?php echo Address?>">
    <input type="hidden" name="address2" value="<?php echo Address2?>">
    <input type="hidden" name="city" value="<?php echo City?>">
    <input type="hidden" name="zip" value="<?php echo Postcode?>">
    <input type="hidden" name="day_phone_a" value="">
    <input type="hidden" name="day_phone_b" value="<?php echo Mobile?>">

    <!-- We don't need to use _ext-enter anymore to prepopulate pages -->
    <!-- cmd = _xclick will automatically pre populate pages -->
    <!-- More information: https://www.x.com/docs/DOC-1332 -->
    <input type="hidden" name="cmd" value="_xclick" />
    <input type="hidden" name="business" value="paypal@email.com" />
    <input type="hidden" name="cbt" value="Return to Your Business Name" />
    <input type="hidden" name="currency_code" value="GBP" />

    <!-- Allow the customer to enter the desired quantity -->
    <input type="hidden" name="quantity" value="1" />
    <input type="hidden" name="item_name" value="Name of Item" />

    <!-- Custom value you want to send and process back in the IPN -->
    <input type="hidden" name="custom" value="<?php echo session_id().?>" />

    <input type="hidden" name="shipping" value="<?php echo $shipping_price; ?>" />
    <input type="hidden" name="invoice" value="<?php echo $invoice_id ?>" />
    <input type="hidden" name="amount" value="<?php echo $total_order_price; ?>" />
    <input type="hidden" name="return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/thankyou"/>
    <input type="hidden" name="cancel_return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/cancelled" />

    <!-- Where to send the PayPal IPN to. -->
    <input type="hidden" name="notify_url" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/process" />
</form>

客户付款后,PayPal 会通知您的脚本,之后您可以做任何您想做的事情来处理成功的付款。

在您的 PHP 文件中处理付款:Paypal Developers LINK

验证

* NEVER TRUST ANY USER SUBMITTED DATA *

对于所有 PayPal 交易,用户可以编辑表单中的数据并提交不需要或不正确的数据。您应该将所有变量(例如 ID、金额、运费等)保存在数据库中,并验证何时从 PayPal 收到 IPN 请求(以确保它们匹配)。

以与处理 SQL 数据相同的安全性处理 PayPal 交易,转义所有变量,从不信任任何用户提交的数据并始终验证您的数据。

【讨论】:

有没有办法取消支付? (授权和捕获部分)。 取消付款是什么意思?,如果客户通过贝宝取消付款,他们将被重定向到“cancel_return”,如果您想通过贝宝退款,您必须使用paypal API 而不是 IPN。 这就是我想说的。很抱歉不清楚(我认为“我必须使用授权和捕获来执行此操作(当然是为了能够在时间限制内取消付款)。”有点说但可能不是这样清除。)。我必须能够取消付款,因此酒店可以拒绝预订请求。或者重新找到什么的。 您将不得不为此使用 API,我之前没有这样做过,但它应该很简单,使用此链接了解更多信息:cms.paypal.com/us/cgi-bin/…,最好提出一个新问题标题中的“Paypal API”。这是一项更大的工作,您必须使用 SOAP 或 CURL,构造并发送标头,然后您才能访问 api。 不好的建议!不幸的是,我还不能投票。永远不要在客户端的表单中处理关键业务逻辑信息,因为我可以通过两次单击更改业务名称和/或金额,处理表单并让您的后端为我预订一些东西/在您的仓库中发送发送订单/获取访问权限到在线信息产品/任何东西。【参考方案2】:

你的意思是这样的吗?

http://net.tutsplus.com/tutorials/html-css-techniques/creating-a-paypal-payment-form/

【讨论】:

很好的教程...而且很有用...但是如果我这样做,我将无法取消付款(授权和捕获部分)。【参考方案3】:

你需要先阅读这些文章,它是pdf格式的,下载它并有时间去阅读它,它的paypal的官方支付整合指南。

https://cms.paypal.com/cms_content/en_US/files/developer/PP_WPP_IntegrationGuide.pdf

https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_ExpressCheckout_IntegrationGuide.pdf

希望这会有所帮助。

【讨论】:

【参考方案4】:
<?php
$paypal_link = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; //Test PayPal API URL
$paypal_username = 'yash4367@gmail.com'; //Business Email
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Paypal Payment Gateway</title>
</head><body>
    <img src="images/image2.jpeg"/>
    <br/>Prodcut Name: 
    <br/>Product Price:
    <form action="<?php echo $paypal_link; ?>" method="post">
        <input type="hidden" name="business" value="<?php echo $paypal_username; ?>">
        <input type="hidden" name="cmd" value="_xclick">
        <input type="hidden" name="amount" value="5">
        <input type="hidden" name="currency_code" value="USD">
        <input type="image" name="submit" border="0"
        src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif">
    </form>
</body>
</html>

【讨论】:

以上是关于paypal, php - 将贝宝支付整合到网站中的主要内容,如果未能解决你的问题,请参考以下文章

paypal rest api支付调用使用php返回401

如何将贝宝与codeigniter集成?

多个接收方和一个发送方的 Paypal 集成

网关 [paypal] 不支持方法 [create]

贝宝支付与 PHP 集成

如何在会员网站上使用贝宝 IPN (PHP)