【问题标题】:Easier way to integrate PayPal express checkout?集成 PayPal 快速结账的更简单方法?
【发布时间】:2013-03-15 15:27:26
【问题描述】:

我已经为 Wordpress CMS 构建了一个产品生成和显示插件,现在我正在尝试为结帐流程集成某种形式的 PayPal 集成。

我有购物车、产品、运输、总计,所有这些都是我自己计算出来的,我希望有人能指出我将这些信息发送到 PayPal 的最简单方向。我知道这样做的一些方法不是那么安全,而另一些方法会让你像某种表演犬一样跳过篮球。我一直在尝试学习如何使用 cURL,然后如何让它与 PHP 一起工作——它看起来真的有点乱。我现在确实有 cURL 在我的 WAMP 服务器上工作......但是......

有更好的方法还是我应该继续学习 cURL?

我可以格式化数据,但它需要发送到 PayPal,并且不介意使用 JavaScript 执行此操作 - 这不是付费墙,每个订单都由人工检查准确性 - 所以有人弄乱了客户端脚本不会打扰我。我也绝对想将它们发送到 PayPal,我不想存储/处理他们的信用卡信息。但是,如果有 IPN,那就太好了。有人可以指出我正确的方向或向我保证我已经朝着那个方向前进了吗?

非常感谢。

【问题讨论】:

    标签: php javascript wordpress curl paypal


    【解决方案1】:

    这就是我使用所有表单详细信息自动重定向到 PayPal 的方式;

    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="paypal">
    
     <input type="hidden" name="cmd" value="_xclick" />
      <input type="hidden" name="cbt" value="Return to example" />
     <input type="hidden" name="business" value="email" />
     <input type="hidden" name="item_name" value="example Purchase" />
     <input type="hidden" name="amount" value="9.99">
     <input type="hidden" name="button_subtype" value="services" />
     <input type="hidden" name="no_shipping" value="1">
     <input type="hidden" name="return" value="URL" />
     <input type="hidden" name="notify_url" value="URL"/>
     <input type="hidden" name="cancel_return" value="URL" />
    <input type="hidden" name="currency_code" value="USD"/>
    <input type="hidden" name="image_url" value="" />
    <input type="hidden" id="custom" name="custom" value="invoice_id to track"/>
     <input type="hidden" class="btn btn-primary" style="width:100%" alt="PayPal - The safer, easier way to pay online!"/>
    
    </form>
    

    对于多个产品,您可以简单地将更多产品添加到表单中,例如;

    <input type="hidden" name="item_name_1" value="Item #1">
    <input type="hidden" name="amount_1" value="1.00">
    <input type="hidden" name="item_name_2" value="Item #2">
    <input type="hidden" name="amount_2" value="2.00">
    

    但是,使用这种方法并不是很好

    所有数据都需要使用 PHP 生成并输入到页面中,您还需要在 IPN 回调时检查交易以确保其已付款。

    <script type="text/javascript">
      function myfunc () {
         var frm = document.getElementById("paypal");
         frm.submit();
      }
      window.onload = myfunc;
    </script>
    

    【讨论】:

    • 感谢您的快速回复。这适用于一整车产品还是一次只适用于一个产品?您能否提供有关您如何处理 IPN 的任何信息?
    • 再次感谢,生成此表单发送到 PayPal 所需的 HTML 应该不是问题。看起来唯一缺少的拼图就是找出和处理 IPN。
    • 是的,这是该过程中最烦人的部分之一,可能值得您访问 paypal 文档网站并获取默认的 PHP IPN 脚本,然后使用您输入的 unique_id 查询数据库表单中的自定义字段,用于获取交易信息并检查所有内容。
    • 伙计们,我有一个问题,表单操作是直接到贝宝的,你们如何检查安全性。我的意思是,如果有人在 html 中进行更改并签出较少的金额怎么办......在提交表单之前你如何检查所有这些
    • 您将在IPN(即时付款通知)中确认您从 PayPal 收到的信息,然后才能继续执行您允许成功付款的任何操作。
    【解决方案2】:

    您可能想使用新的 PayPal 开发工具包。他们有一套很好的示例代码, 包括快速结帐和 IPN 的代码。 在这里试试 https://www.x.com/developers/paypal/documentation-tools/paypal-sdk-index 获取用于快速结帐的 SDK。在这 时间,它们应该是 SDK 98 for PHP。

    您不必担心卷曲, SDK 会为您处理所有这些。 典型的调用可能是这样的。

    $setECResponse = $paypalService->SetExpressCheckout($setECReq);
    

    这行代码是根据示例建模的。它是 都是面向对象的。他们为您提供课程。 在这种情况下,有一个您填写的请求对象, 这些例子准确地展示了如何做到这一点;只需使用 示例作为您的模板。

    听起来您想进行 PayPal Express 结账, 这样你就不必处理信用卡或任何东西 像那样。用户被重定向到 PayPal 网站 所有的金融交易都在那里发生。这 用户被重定向回您的网站。然后你有一个 用户可以查看订单并单击的页面 如果他们同意,请提交。当用户点击提交时, 你调用一个 PayPal API 告诉 PayPal 交易 被批准。然后 PayPal 执行交易并 向您发送带有交易 ID 的确认信息。 然后您可以调用 getTransactionDetails 并显示 向客户确认。你可以另外放 将这些交易详情存入数据库。

    以下是您可以为此调用的 API。这些 与他们提供的示例代码非常接近

    $paypalService->SetExpressCheckout($setECReq);
    

    控制转到 PayPal URL,用户转到 通过那里的几页。控制权返回给您。

    您的订单审核页面 $paypalService->GetExpressCheckoutDetails($getExpressCheckoutReq);

    您的订单确认页面

    $paypalService->GetExpressCheckoutDetails($getECReq);
    
    $paypalService->DoExpressCheckoutPayment($DoECReq);
    

    告诉 PayPal 进行交易。

    $paypalService->GetTransactionDetails($request);
    

    您可以在此处将交易详情放入数据库。 您也可以向自己发送一封包含所有详细信息的邮件, 这样你就会知道什么时候发生交易。

    IPN 可能有点棘手。有一个示例 IPN 侦听器 他们提供,这将有所帮助。你需要 在 PayPal 网站上设置您的侦听器 URL。你会 还需要设置SSL证书。

    SDK 是相当新的,但 PayPal 正在努力平衡 更新的做事方式,developer.paypal.com。刚出来 在过去一个月左右的时间内。你可能也想调查一下。

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2018-04-15
      • 2014-04-15
      • 2013-05-17
      • 2011-11-28
      • 1970-01-01
      • 2017-05-26
      • 2017-10-04
      • 2011-12-03
      相关资源
      最近更新 更多