我目前正在开发与PayPal的Payflow Pro Gateway的集成。我正在向PayPal发送请求以获取他们的“安全令牌”,以便我可以使用它来进行真正的交易。我在SO上找到的样本通过cURL工作,但我运行的原始HTML Form POST和RunScope测试确实不工作。
这是cURL命令:
curl https://pilot-payflowpro.paypal.com -kd "PARTNER=PayPal&VENDOR=*****&USER=*****&PWD=*****&TRXTYPE=A&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=*******&SILENTTRAN=TRUE"
-k选项是:
“(SSL)此选项明确允许curl执行”不安全“SSL 连接和转移。尝试所有SSL连接 通过使用默认安装的CA证书捆绑包使其安全。 除非-k,否则这会使所有被认为“不安全”的连接失败 - 使用了固化。“
-d选项是:
“(HTTP)将POST请求中的指定数据发送到HTTP服务器, 与用户填写HTML时浏览器的操作方式相同 表单并按下提交按钮。这将导致卷曲通过 使用content-type将数据发送到服务器 应用程序/ x-WWW窗体-urlencoded。比较-F, - form。“
-d, - data与--data-ascii相同。要纯数据二进制发布数据,您应该使用--data-binary选项。对URL进行URL编码 您可以使用的表单字段的值--data-urlencode。
如果在同一命令中多次使用这些选项中的任何一个 在行中,指定的数据将与a合并在一起 分离& -symbol。因此,使用'-d name = daniel -d skill = lousy'会 生成一个看起来像'name = daniel& skill = lousy'的帖子块。
如果用字母@开始数据,其余的应该是一个文件 用于读取数据的名称,或者 - 如果您希望curl读取数据 来自stdin。该文件的内容必须已经过URL编码。 也可以指定多个文件。从名为的文件中发布数据 因此,'foobar'将使用--data @foobar完成。当--data被告知 从这样的文件读取,回车和换行将是 剥离了。
效果很好并返回此回复:
RESULT=0&SECURETOKEN=*****&SECURETOKENID=*****&RESPMSG=Approved
但是,我认为同一个请求在以下HTML表单POST中失败:
<input type="hidden" name="TRXTYPE" value="A" />
<input type="hidden" name="SILENTTRAN" value="TRUE" />
<input type="hidden" name="AMT" value="40" />
<input type="hidden" name="CREATESECURETOKEN" value="Y" />
<input type="hidden" name="SECURETOKENID" value="*****" />
<input type="submit" value="Get Secure Token" />
这让我在FireFox中“连接已重置”。
我也尝试使用jQuery使用$ .ajax()来发布数据,但是我收到了200响应而没有数据。
当我将上述参数输入RunScope时,我得到:
RESULT=1&SECURETOKENID=*****&RESPMSG=User authentication failed
这没有任何意义!
我以为PayPal正在做一些检查用户代理或请求标题的事情,但我没有任何真正的想法。任何人都可以对这种行为有所了解吗?