curl - PayFlowPro 与 ColdFusion 和 Curl 的集成问题

标签 curl paypal coldfusion

我们有一个非常旧的 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 技术支持无法告诉我到底传入了什么,而且我还没有找到任何有效的报价组合。

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

最佳答案

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

<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"')>

该代码段与 ColdFusion MX 兼容。

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

关于curl - PayFlowPro 与 ColdFusion 和 Curl 的集成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467396/

相关文章:

xml - 如何在coldfusion中生成.xml文件?

regex - ColdFusion - 将正则表达式反向引用传递给函数调用

facebook - 为什么查找 ssl 证书的 curl 失败会间歇性地工作?

mysql - Coldfusion 输出变量作为数据库中的图像

php - 为什么 cURL 在发送和接收 HTTP 100 继续代码后挂起,而不是继续处理正文?

paypal - 如何在 paypal api 中获取有关用户取消订阅的通知?

paypal - PayFlow 定期付款

Paypal 立即购买按钮自定义变量不起作用

linux 的curl POST 请求不起作用

asp.net - 将 cURL 转换为 ASP.Net