Forms cURL-post到PayPal成功,而HTML-Form-post和RunScope-post失败

Forms cURL-post到PayPal成功,而HTML-Form-post和RunScope-post失败,forms,post,curl,paypal,runscope,Forms,Post,Curl,Paypal,Runscope,我目前正在开发与PayPal的Payflow Pro网关的集成。我正在向PayPal发送一个请求,以获取他们的“安全令牌”,这样我就可以使用它进行真正的交易。我在SO上找到的一个示例可以通过cURL工作,但我运行的原始HTML表单POST和RunScope测试不起作用 <input type="hidden" name="TRXTYPE" value="A" /> <input type="hidden" name="SILENTTRAN" value="TRUE" />

我目前正在开发与PayPal的Payflow Pro网关的集成。我正在向PayPal发送一个请求,以获取他们的“安全令牌”,这样我就可以使用它进行真正的交易。我在SO上找到的一个示例可以通过cURL工作,但我运行的原始HTML表单POST和RunScope测试不起作用

<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" />
下面是cURL命令:

curl https://pilot-payflowpro.paypal.com -kd "PARTNER=PayPal&VENDOR=*****&USER=*****&PWD=*****&TRXTYPE=A&AMT=40&CREATESECURETOKEN=Y&SECURETOKENID=*******&SILENTTRAN=TRUE"
<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" />
根据:

<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" />
-k选项是:

<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" />
“(SSL)此选项明确允许curl执行“不安全的”SSL 连接和传输。尝试删除所有SSL连接 通过使用默认安装的CA证书捆绑包使其安全。 这会使所有被视为“不安全”的连接失败,除非-k, --使用的是不安全的。”

<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" />
-d选项是:

<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" />
“(HTTP)将POST请求中的指定数据发送到HTTP服务器, 与用户填写HTML时浏览器所做的相同 表单并按下提交按钮。这将导致curl通过 使用内容类型将数据发送到服务器 application/x-www-form-urlencoded。与-F,--form比较。“

<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" />
-d、 --数据与--数据ascii相同。要发布纯二进制的数据,应该使用--data binary选项。对 可以使用的表单字段的值--data urlencode

<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" />
如果在同一命令上多次使用这些选项中的任何一个 行中,指定的数据段将与 分隔&-符号。因此,使用'-d name=daniel-d skill=loosy'将 生成一个类似“name=daniel&skill=loosy”的帖子块

<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" />
如果数据以@开头,那么其余的应该是一个文件 要从中读取数据的名称,或者-如果要读取数据 来自stdin。文件的内容必须已经是URL编码的。 还可以指定多个文件。从名为的文件发布数据 因此,“foobar”将使用--data@foobar完成。当——数据被告知 要从这样的文件中读取,回车符和换行符将是 脱光衣服

<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" />
这非常有效,并返回以下响应:

RESULT=0&SECURETOKEN=*****&SECURETOKENID=*****&RESPMSG=Approved
<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" />
HTML表单帖子 但是,我认为相同的请求在以下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" />

<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" />
这没有任何意义

<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" />

我想PayPal要么在检查用户代理,要么在检查请求头,但我没有任何真正的想法。有人能解释一下这种行为吗?

为什么要通过表单向API发送原始调用?试着发布到脚本中,让脚本为您完成工作这只是为了测试,并不重要,我只是想了解其他方法失败的原因。
<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" />