【发布时间】: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