transactions - 具有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档

标签 transactions payflowpro paypal

我在集成 - 并找到当前文档 - 将 PayPal PayFlow Pro 集成到我的网站时遇到了一些困难。

PayFlow Link 有一个类似的问题 - https://stackoverflow.com/questions/15808604/result-1-respmsg-userauthenticationfailed-in-test-transaction-for-mastercard - 但我想详细说明。

我想将 透明重定向 功能与 SILENTTRAN 选项一起使用,以便:

  • 信用卡数据直接发送到网关(即不通过我的服务器)
  • 用户被重定向回指定页面以确认交易或错误(响应页面)。

  • 我目前正在阅读这份文件:
    https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/payflowgateway_guide.pdf

    这在此页面上列为 Payflow Gateway 开发人员指南 (PDF) - https://developer.paypal.com/webapps/developer/docs/classic/products/payflow-gateway/ - 所以我假设它是当前文档。

    根据第 28 页,该过程应为:
  • 客户单击“购买”在您的网站上购买商品。 [完成]
  • 您通过将安全 token ID 传递给网关服务器来请求安全 token 。在请求中,您传递名称-值对 SILENTTRAN=TRUE。此名称-值对可防止显示托管页面。 [完成]
  • 网关服务器将安全 token 和您的 token ID 返回到您的网站。 [完成]
  • 您在网站的结账页面中向客户显示信用卡字段。 [完成]
  • 客户在信用卡字段中输入他们的信用卡号、到期日期和其他敏感数据,然后单击提交。 [完成] 浏览器将支付数据直接发布到网关服务器,避开您的网站并简化您的 PCI 合规性要求。 [这里的问题]

  • 以下是用于透明重定向的安全 token 请求的示例。我使用占位符代替了我实际的实时 PayFlow Pro 帐户详细信息(该帐户在 manager.paypal.com 服务摘要中声明了“Payflow SDK/API(完全访问权限)Live”),但我在实际请求。同样,我使用可公开访问的页面作为返回 URL:
    USER=MYUSER&VENDOR=MYUSER&PARTNER=VSA&PWD=MYPASSWORD&BILLTOFIRSTNAME=John&BILLTOLASTNAME=Doe&BILLTOSTREET=123 Fake Street&BILLTOSTREET2=&BILLTOCITY=Sydney&BILLTOZIP=2000&BILLTOPHONENUM=5555555555&EMAIL=me@email.com&BILLTOSTATE=NSW&AMT=0.05&RETURNURL=http://www.example.com&CANCELURL=http://www.example.com&ERRORURL=http://www.example.com&TRXTYPE=A&SILENTTRAN=TRUE&VERBOSITY=HIGH&CREATESECURETOKEN=Y&TENDER=C&SECURETOKENID=VDUOBDNLSXTLYAAAAAATLSEBLAAAAAAAAAA
    

    我使用服务器端代码执行 token 事务,我可以看到我收到了如下响应:
    RESULT=0&SECURETOKEN=TOKENWASHEREsdsdfjkj&SECURETOKENID=VDUOBDNLSXTLYAAAAAATLSEBLAAAAAAAAAA&RESPMSG=Approved
    

    因此,该帐户似乎在这里正确地进行了身份验证。我已在 Fiddler 中确认我将此请求发布到 https://payflowpro.paypal.com

    然后我接受该响应并将其放入发回网关的 HTML 表单中,例如:




        <form id="form" action="https://payflowpro.paypal.com" method="post">
    
            <!-- <input name="MODE" class="inpPPField" id="hdn_pp_mode" type="hidden" value="Test"> -->
    
            <input name="SECURETOKEN" class="inpPPField" id="hdn_pp_securetoken" type="hidden" value="TOKENWASHEREsdsdfjkj">
    
            <input name="SECURETOKENID" class="inpPPField" id="hdn_pp_securetokenid" type="hidden" value="VDUOBDNLSXTLYAAAAAATLSEBLAAAAAAAAAA">
    
            <input name="CARDNUM" class="inpPPField" id="hdn_pp_CardNum" type="hidden" value="4111111111111111">
    
            <input name="EXPMONTH" class="inpPPField" id="hdn_pp_expMonth" type="hidden" value="11">
    
            <input name="EXPYEAR" class="inpPPField" id="hdn_pp_expYear" type="hidden" value="16">
    
            <input name="CVV2" class="inpPPField" id="hdn_pp_cvv2" type="hidden" value="123">
    
            <!--<input name="SILENTTRANS" class="inpPPField" id="hdn_pp_silenttrans" type="hidden" value="Y">-->
    
            <input name="VERBOSITY" class="inpPPField" id="hdn_pp_verbosity" type="hidden" value="HIGH">
    
            <input class="inpPPField" type="submit" value="Submit" />
    
        </form>
    </body>
    



    请注意,我使用了与 token 响应中返回的相同的 token ID 和 token - 这些是占位符。我还使用了实际的信用卡号和其他信用卡字段值。

    这是将我发布到 https://payflowpro.paypal.com ,它只是说明了响应(在页面正文中):

    RESULT=1&RESPMSG=User authentication failed



    这不应该让我回到我的错误页面吗?或者它是否在该过程的早期失败,以至于网关甚至从未尝试解释 token 和重定向?我已经尝试将我的返回 URL 设置为实时网站 URL,但似乎并没有什么不同。我还尝试从可公开访问的网络服务器而不是本地主机发布此内容,但结果是相同的。

    我遇到的另一个问题是查找相关文档。这里有一个“Payflow Service Testing”文档:
    https://ppmts.custhelp.com/app/answers/detail/a_id/456/kw/payflow%20pro%20transparent%20redirect%20error%20page%20get%20codes

    此页面的日期为 2007 年, 测试使用 Payflow Pro 标题下的链接(即该指南可在 x.com 上获得)已损坏。该指南有点含糊,我发现的唯一代码示例是用 PHP 编写的(请参阅 https://go.developer.ebay.com/developers/community/blogs/pp_integrations_nate/payflow-transparent-redirect )。我已将示例中的逻辑重写为 ASP.Net 应用程序。

    总之,我的问题是:
  • 我是否使用正确的逻辑来处理信用卡交易?
  • 如果没有,有人可以指出我哪里出错了,以及在哪里可以找到最相关和最新的文档
  • 最新测试程序文档的链接

  • 我的下一个想法是尝试使用以下说明设置使用测试帐户:
    https://ppmts.custhelp.com/app/answers/detail/a_id/929/
    显然这是针对托管的 PayFlow 页面,但我怀疑只要我指定 SILENTTRAN 选项,过程应该是相似的。我在本周早些时候尝试让测试帐户正常工作,但没有成功,但在这一点上尝试下一个合乎逻辑的事情似乎是不成功的。

    我已经向 PayPal 工程师开了一个支持票,他们正在调查这个问题,但很高兴知道社区中是否有人设法解决了类似的问题。

    编辑:根据 PayPal 工程师的说法,我刚刚谈到 SILENTTRANS 值仅在安全 token 请求中是必需的。我已经在上面的交易请求表中对此进行了评论,但这并没有解决问题。我们还确认可以使用我的帐户详细信息向 https://pilot-payflowpro.paypal.com/ 发出非安全 token (即非透明重定向)请求。

    编辑 2:PayPal 指示我使用 https:// payflowlink .paypal.com/(不是 https:// payflowpro .paypal.com),但要继续使用 post_a 进行 URL 交易 token 请求。这确实允许我使用透明重定向进入我的确认页面(这是一个很好的结果),但对我来说我使用的是“payflowlink”而不是“payflowpro”并没有多大意义网关。我还发现这个教程似乎支持这个 https://payflowpro.paypal.com

    任何人都可以使用 PayFlow Pro 透明产品,请确认这是正确的(或不正确)。

    最佳答案

    如果您要使用与托管结账页面相关的任何功能,您需要重定向到 - https://payflowlink.paypal.comhttps://pilot-payflowlink.paypal.com
    Payflow Pro URL 专门用于 API 调用,您不应该通过它们重定向买家。

    您的帐户还需要是正确的类型才能使用托管结帐功能。您可以通过登录并检查右侧以查看您的帐户启用了哪些产品来检查您的帐户可用的选项。

    透明重定向的文档很少。 X.com 上有一些帖子,但这些文章还没有移到其他地方。

    关于transactions - 具有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635386/

    相关文章:

    c# - 可以使用 PayFlow Pro 创建非经常性配置文件吗

    android - 以编程方式向给定帐户发送付款 - Paypal android SDK

    android - PayPal Android SDK 不适用于美元以外的其他货币

    paypal - 定期付款 - 一个月有多长?

    database - Django HTSQL TransactionManagementError 与 sqlite 以及 PostgreSQL 后端

    hibernate - withTransaction 并保存大量对象?

    更新失败时Mysql事务回滚

    .net - Payflow Pro .Net SDK (Payflow_dotNET.dll) 缺少查询交易命令的 CUSTREF 选项

    paypal - 无法连接到主机输入服务器 Uri = https ://pilot-payflowpro. paypal.com:443

    mysql - 可以通过 perl 中的 http 请求进行交易吗?