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

Posted

技术标签:

【中文标题】带有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档【英文标题】:PayPal PayFlow Pro with Transparent Redirect - User Authentication Failed Issues / Documentation 【发布时间】:2013-07-12 04:54:36 【问题描述】:

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

PayFlow 链接在这里有一个类似的问题 - https://***.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 页,该过程应该是:

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

以下是透明重定向的安全令牌请求示例。我使用占位符代替我实际的实时 PayFlow Pro 帐户详细信息(此帐户在 manager.paypal.com 服务摘要中声明“Payflow SDK/API(完全访问)实时”),但我在实际要求。同样,我使用可公开访问的页面作为返回 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

我使用服务器端代码执行令牌事务,我可以看到我收到了这样的响应:

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>

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

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

RESULT=1&RESPMSG=用户验证失败

这不应该让我回到我的错误页面吗?还是它在过程的早期失败,以至于网关甚至从不尝试解释令牌和重定向?我尝试将我的返回 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 年,Testing using 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 值仅在安全令牌请求中是必需的。我已经在上面的交易请求表中对此进行了注释,但这并没有解决问题。我们还确认可以使用我的帐户详细信息向https://pilot-payflowpro.paypal.com/ 发出非安全令牌(即非透明重定向)请求。

编辑 2:PayPal 指示我使用 https://payflowlink.paypal.com/(不是 https://payflowpro.paypal.com)对于事务发布 URL,但要继续使用 https://payflowpro.paypal.com 进行令牌请求。这确实允许我使用透明重定向进入我的确认页面(这是一个很好的结果),但我使用“payflowlink”而不是“payflowpro”对我来说没有多大意义网关。我还发现这个教程似乎支持这个https://go.developer.ebay.com/developers/community/blogs/ppintegrationsnate/new-payflow-gateway-tutorial

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

【问题讨论】:

注意:这个问题有时是指SILENTTRANS,正确的参数是SILENTTRAN Aaron,你从@Gerzie 的回答中得到了解决方案吗?原因,它不适合我。 是的 - 问题是我使用了不正确的 URL 端点。但是,考虑到这是两年前的事,情况可能已经发生了变化。您遇到的具体问题是什么? 我遇到了类似的问题,刚刚切换到 Pilot-payflowlink.paypal.com 进行交易。我不再收到用户身份验证失败,但现在收到空白响应,http 状态代码 200。我应该收到响应正文吗? 一个200代码仅仅意味着HTTP请求成功,但不一定是事务。当我实现这个时,我使用了透明重定向功能。从内存中,网关将用户重定向到我在商家仪表板下配置的端点 URL,并且 PayPal 交易状态代码作为查询字符串附加到端点 URL。 【参考方案1】:

如果您要使用与托管结帐页面相关的任何功能,您需要重定向到 - https://payflowlink.paypal.comhttps://pilot-payflowlink.paypal.com

Payflow Pro 网址专门用于 API 调用,您不应该通过它们来重定向买家。

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

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

【讨论】:

以上是关于带有透明重定向的 PayPal PayFlow Pro - 用户身份验证失败问题/文档的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Payflow 将 securitytokenid 作为对象传递?

使用带有 paypal 支付专业版的信用卡时,Magento 不会重定向,但 express 选项重定向很好

使用 Payflow Pro 进行定期付款 - 交易类型无效

Paypal 自适应支付重定向 URL GET 变量

如何创建 Payflow 链接沙盒帐户

从 Paypal 重定向回来后,Wordpress + WooCommerce 中的会话不一致