【问题标题】:PayFlowPro Integration Problems with ColdFusion and Curl与 ColdFusion 和 Curl 的 PayFlowPro 集成问题
【发布时间】:2015-12-04 16:55:27
【问题描述】:

我们有一个非常古老的 ColdFusion 网站,我们需要为即将到来的 PayPal SSL 证书更改进行更新。我们发现 ColdFusion 包含的证书与新的 PayPal 证书不兼容,因此我们需要使用 curl 来实际调用 PayFlowPro。我们将使用 cfexecute 标签从 ColdFusion 调用 curl。

当我使用 curl 从 Linux 命令行调用 PayFlowPro 时,交易正确完成。例如,这是导致成功处理交易的脚本命令。

curl https://pilot-payflowpro.paypal.com/transaction -d "PARTNER=VeriSign&PWD=xxxxxxxx&VENDOR=xxxxxxx&USER=xxxxxx&TENDER=C&ACCT=5105105105105100&TRXTYPE=S&EXPDATE=1215&AMT=2.02"

然后我尝试使用与脚本中完全相同的名称-值对从 ColdFusion 调用 curl。 ColdFusion 代码如下:

<cfset targ = 'https://pilot-payflowpro.paypal.com/transaction -d "PARTNER=VeriSign&PWD=xxxxxxxx&VENDOR=xxxxxxx&USER=xxxxxx&TENDER=C&ACCT=5105105105105100&TRXTYPE=S&EXPDATE=1215&AMT=2.02"'>

<cfexecute name = "/usr/local/bin/curl"
       arguments = "#targ#"
       timeout = "10"
       variable = "tdata" />

<cfdump var="#tdata#">

ColdFusion 返回以下内容: RESULT=4&RESPMSG=金额无效

因为在两个调用中使用了相同的名称/值对,而且 2.02 是一个有效数量,我猜它与引号有关,或者在行尾传入了一些意想不到的东西. PayPal 技术支持无法告诉我传递的具体内容,我也没有找到任何有效的报价组合。

我们将不胜感激有关问题原因的任何帮助。

【问题讨论】:

  • 几岁才算很老?您可以将 PayPal 的证书导入 CF 证书信任库:helpx.adobe.com/coldfusion/kb/…
  • 为了纠正你史蒂夫,问题在于你使用的 JAVA 版本附带的证书。 CF 不处理握手 - 这是底层应用程序引擎 (Java) 的工作。尝试在 https 之前添加一个空格 - 或尝试在“名称”参数中包含整个内容。 cfexecute 通常需要大量的试验和错误。 :)
  • 抱歉,我无法对此评论更具体,而且它可能与您的问题无关,但我遇到过使用工具生成证书的案例,其中使用 IBM vs Oracle jar意味着工作证书和非工作证书之间的区别。在此过程中没有生成错误或警告消息。接收端期望 IBM 创建证书(我认为是问题所在),但没有对此的文档警告。只是通过在我们的系统上尝试备用 jar 路径才发现的;-/ 祝你好运!

标签: curl paypal coldfusion


【解决方案1】:

尝试将参数作为数组传递:

<cfset targ = arrayNew(1)>
<cfset arrayAppend(targ, "https://pilot-payflowpro.paypal.com/transaction")>
<cfset arrayAppend(targ, '-d "PARTNER=VeriSign&PWD=xxxxxxxx&VENDOR=xxxxxxx&USER=xxxxxx&TENDER=C&ACCT=5105105105105100&TRXTYPE=S&EXPDATE=1215&AMT=2.02"')>

sn-p 与 ColdFusion MX 兼容。

如果这也不起作用,则参数的总长度可能是一个问题(假设您的示例已被剥离)。 cfexecute 可能会静默截断参数字符串。我们在 Windows 上遇到了这个问题。尝试使用较短的字符串(少于 200 个字符)在 cfexecute 上测试 curl。

【讨论】:

    【解决方案2】:

    您没有提及您使用的是哪个版本的 Adob​​e ColdFusion。 ColdFusion 8 和 9 存在一些错误,无法连接到较新的证书,Adobe 不会修复它。

    如果您使用 Windows 并且有能力安装它,我建议使用 CFX_HTTP5。我们最近遇到了许多 SSL 证书的问题,用这个 C++ 标签替换内置功能非常有益(特别是因为 ColdFusion 8、9 和 10 似乎没有及时更新来修复这个问题。)它使用Windows 中安装的证书,但也可以使用客户端证书。

    我们最近遇到了第三方 API 的 SSL 证书过期的问题。 CFX_HTTP5 能够忽略错误并继续工作,而 CFHTTP 无法连接。

    http://adiabata.com/cfx_http5.cfm

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2014-08-06
      • 2018-08-13
      • 1970-01-01
      相关资源
      最近更新 更多