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