【问题标题】:Paypal Encrypted Website paymentsPaypal 加密网站付款
【发布时间】:2011-02-08 00:47:21
【问题描述】:

我正在尝试将 PayPal 网站付款标准 > 购物车上传付款类型集成到我的购物车中。不久前我集成了 Google Checkout,并没有发现它像使用 paypal 那样过于混乱。

我正在从这里获取有关如何加密它的信息: https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_ID=developer/e_howto_html_encryptedwebpayments#id08A3I0P017Q

Paypal 说我需要使用 OpenSSL 生成私钥和公共证书。我去了 OpenSSL 并下载了最新版本,它只是一个包含各种文件的文件夹,但我没有看到可以使用的应用程序,不知道在这里做什么。

即使我要让 OpenSSL 为我生成一个私钥和公共证书,下一步也是下载一个 MS 或 Java 命令行工具,以提前创建带有购物车总数、税金、等等,这对我来说听起来很疯狂,就像我应该在每次订单之前手动执行此操作一样??

显然,我不知道客户将要购买的购物车中的物品,因此我需要使用 PHP 在我的网站上即时完成此操作。但我完全迷失了。必须有一种方法来设置动态安全购物车上传到贝宝。有人可以指出我正确的方向吗?

【问题讨论】:

    标签: php encryption paypal


    【解决方案1】:

    首先,您对 OpenSSL 的问题。如果您使用 linux 或 Mac,这很容易(一如既往)。像往常一样安装软件包并使用贝宝说明页面上的命令。在 Windows 上,请确保您从 page 下载 binaries 而不是 source

    您不需要使用他们提供的 Java 程序来生成链接。说明书的那部分是为制作静态页面的人准备的,而不是使用 PHP。 PayPal 是一个很大的解决方案,它为您提供了极大的灵活性,但他们通过为您提供许多不同的 API 和处理付款的方式来做到这一点。您发布的链接中的 EWP(加密网站付款)不是您要查找的内容。

    自从我在客户解决方案中使用 PayPal 以来已经有几年了。上次,有一个单独的 API 可以执行您所要求的操作,称为 PDT (Payment data transfer)。自从我上次使用它以来,API 发生了一些变化,而且自从我上次下载它以来,文档似乎也发生了变化,但仍然有“网站支付标准集成指南”和“订单管理集成指南”。我认为那些仍然有您正在寻找的说明。

    简短的回答是,使用 PayPal 自己生成加密链接以构建自定义解决方案是非常可能的,但您必须做一些工作才能实现。在网站上很难找到文档

    【讨论】:

      【解决方案2】:

      虽然 Nicholas 已经回答了您如何生成所需的私钥和证书并建议使用 PDT 来满足您的需求,但我也想了解在 PHP 中实际使用加密支付,因为我相信一些访问者会想做这个。

      您运行的服务器需要安装 openssl(它安装在大多数 Linux 服务器上),并且您需要能够从 php 执行它(即通过 exec 命令)。

      执行此操作的代码可在此处获得:

      http://www.stellarwebsolutions.com/en/articles/paypal_button_encryption_php.php

      我成功地使用了它(在调整文件变量后,因为它们没有在函数中被正确提取)。

      【讨论】:

      • 如果您能解释一下您调整了哪些确切的文件变量,将会非常有帮助。
      【解决方案3】:

      这个帖子好像有点老了,我猜。

      不过,我认为我可能会投入 2 美分

      Paypal 现在是一个选项,只需单击“卖家”选项卡上的复选框,上面写着:“不接受来自未加密网站的付款”......或类似的东西。

      此外,还有一些选项(Paypal 也推荐),下载他们自己的证书,生成您自己的(或公钥),并使用两者来验证和检查付款是否存在欺诈。

      我目前正在这样做。我在我的网站上创建了 paypal 按钮,然后点击了拒绝来自未加密网站的付款的选项。

      问题是:这种所谓的“安全措施”正在阻止我网站上大约 50% 的客户,而且没有明显的原因。

      这就是为什么我正在认真考虑从我的 paypal 按钮中删除这个所谓的安全功能!这很麻烦。无论如何,所有贝宝付款都是安全的,因为它们通过 SSL。我的网站同样受到 SSL 加密的保护。

      而且,从网上广泛的研究来看,大多数人的看法和我一样:“加密”按钮不值得花时间和麻烦,尤其是如果它只会激怒 50% 的潜在客户!

      【讨论】:

      • 我不明白为什么“加密”按钮会激怒 50% 的客户,这不应该对用户透明吗?
      【解决方案4】:

      对于 Python 用户,python-ewp 包负责签名和加密。 * 假设你有可用的 OpenSSL 头文件和库,安装很简单:

      pip install ewp
      

      一旦你有一个包含key=value 行的字符串,你可以将它传递给ewp.sign() 以生成签名,ewp.encrypt() 进行加密:

      signature = ewp.sign('test.key', 'test.crt', data)
      ciphertext = ewp.encrypt('paypal.crt', signature)
      

      请注意,提供了三个文件名:

      • test.key - RSA 私钥
      • test.crt - 由密钥签名的 X509 证书
      • paypal.crt - PayPal 的公共证书

      您可以使用以下方法生成 RSA 密钥:

      openssl genrsa -out test.key 2048
      

      ...并创建一个有效期为一年的自签名证书:

      openssl req -new -key test.key -x509 -days 3650 -out test.crt
      

      可以关注these instructions获取PayPal证书。


      * 免责声明:我是包的作者。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-18
        • 2012-10-11
        • 2012-10-22
        • 2013-10-24
        • 2018-07-14
        • 1970-01-01
        • 2012-06-17
        • 2015-10-17
        相关资源
        最近更新 更多