目前正在尝试使用Paypal实现透明重定向,但无法获取返回URL以包含我正在设置的参数。看来paypal正在从returnurl查询字符串中删除参数,因此我的网站在重定向后行为不正常。我的顺序如下:
1 - 向Paypal发送安全令牌请求,作为令牌请求的一部分传递returnurl和errorurl。
2 - 在我的表单中嵌入从paypal获得的安全令牌值(直接发布到paypal)。
3 - Paypal重定向回到returnurl,但参数丢失....尝试重定向回https://www.somesite.com/site.w?location=results.w¶meter1=value1但是被重定向到https://www.somesite.comt/site.w?location=results.w(缺少参数1 = value1 )。
我已经尝试了对returnurl进行url编码,因此对&符号和问号进行了编码,但是根据paypal文档中的返回URL值不会被编码。
有人知道如何在paypal重定向期间让returnurl包含正确的GET参数吗?
再次感谢, 贝
答案 0 :(得分:1)
只是为了跟进....好吧编码&符号(& - >%26)并将长度添加到RETURNURL参数确实有效并确实传递了值,尽管浏览器没有正确解释网址重定向。我再次尝试没有编码&符号,但保持RETURNURL的长度完整,并在重定向时保留url参数!所以我的最终解决方案是一个包含RETURNURL的安全令牌请求,其中包含长度功能,以便Paypal可以正确解析returnurl值(维护查询字符串参数)。示例如下:
/ opt / pware / bin / curl -s -S -k --connect-timeout 30 --max-time 120 -H“X-VPS-CLIENT-TIMEOUT:45”-d“PARTNER = PayPal& VENDOR = somevendor&安培; USER = SomeUser是否&安培; PWD = somepassword&安培;嫩= C&安培; CREATESECURETOKEN = Y&安培; SECURETOKENID = 0000050&安培; SILENTTRAN = TRUE&安培; RM = 2及TRXTYPE = A和AMT = 40.00&安培; RETURNURL [123] = https://somesite.com/cgi-bin/test/site.w?location=b2c/retail-checkout.w&frames=no&target=main&lang=en-US “https://pilot-payflowpro.paypal.com
对于其他任何想知道如何获取安全令牌的人只需将令牌嵌入到表单中并且returnurl应包含正确的参数....下面是一个示例静态html页面,您可以使用它来测试帖子您的安全令牌/安全令牌ID组合:
<html>
<head>
</head>
<body>
<form id="form" method="POST" action="https://pilot-payflowlink.paypal.com">
<input type="hidden" id="SILENTTRAN" name="SILENTTRAN" value="true"/>
<input type="hidden" id="CURRENCY" name="CURRENCY" value="USD"/>
<input name="VERBOSITY" type="hidden" value="HIGH">
<input type="hidden" name="rm" value="2">
<!--<input name="MODE" type="hidden" value="TEST">-->
<p>SECURETOKEN</p><input type="text" id="SECURETOKEN" name="SECURETOKEN" />
<p>SECURETOKENID</p><input type="text" id="SECURETOKENID" name="SECURETOKENID" />
<p>Address:</p><input type="text" id="BILLTOSTREET" name="BILLTOSTREET" value="123 Test"/>
<p>Zip:</p><input type="text" id="BILLTOZIP" name="BILLTOZIP" value="90210"/>
<p>AMOUNT:</p><input type="text" id="AMT" name="AMT" value="33.00"/>
<p>CSC:</p><input name="CVV2" type="text" value="123">
<p>TRXTYPE:</p><input type="text" id="TRXTYPE" name="TRXTYPE" value="S">
<p>Card Number:</p><input type="text" id="ACCT" name="ACCT" maxlength=16 value="4111111111111111">
<p>Expiry MONTH:</p><input type="text" id="EXPMONTH" name="EXPMONTH" maxlength=2 value="01">
<p>Expiry YEAR:</p><input type="text" id="EXPYEAR" name="EXPYEAR" maxlength=2 value="16">
<input type="submit" value="Submit">
</form>
</body>
</html>
答案 1 :(得分:0)
它应该像我在我的测试环境中测试一样工作,它对我有用。但是我在创建安全令牌的同时为请求中的每个参数传递了长度标记,并对&#34;&amp;&#34;进行了编码。 。 如下所示:
ERRORURL [86] = https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1 CANCELURL [86] = https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1 RETURNURL [86] = https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1
参见附图: