贝宝透明重定向 RETURNURL post 参数

Paypal Transparent Redirect RETURNURL post parameters


目前正在尝试使用 Paypal 实现透明重定向,但无法让 return url 包含我正在设置的参数。似乎贝宝正在从 returnurl 查询字符串中删除参数,因此我的网站在重定向后无法正常运行。我的顺序如下:

1- 向 Paypal 发出安全令牌请求,将 returnurl 和错误 url 作为令牌请求的一部分传递。
2- 在我的表单中嵌入从 paypal 获得的安全令牌值(直接发布到 paypal)。
3- Paypal 重定向回 returnurl 但缺少参数....正在尝试重定向回 https://www.somesite.com/site.w?location=results.w&parameter1=value1 but am instead redirected to https://www.somesite.comt/site.w?location=results.w(缺少参数 1 =值 1)。

我已经尝试 url-encoding returnurl 所以&符号和问号被编码但是根据 return url 中的 paypal 文档值不是进行编码。

有谁知道如何让 returnurl 在 paypal 重定向期间包含正确的 GET 参数?

再次感谢, 托尼

它应该像我在我的测试环境中测试的那样工作并且对我有效。但是我在创建安全令牌时将长度标记与请求中的每个参数一起传递,并对 "&" 进行了编码。 如下所示:

错误网址[86]=https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1 取消URL[86]=https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1 返回网址[86]=https://www.somesite.com/site.w?location=results.w%26parameter1=value1%26parameter1=value1

也请看附件图片:

只是为了跟进....好吧,所以编码与符号 (& -> %26) 并将长度添加到 RETURNURL 参数确实有效并且确实传递了值,尽管浏览器没有正确解释 url 重定向时。我再次尝试不对&符号进行编码,但保持 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&TENDER=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

对于任何想知道在获得安全令牌后该做什么的人,只需将令牌嵌入您的表单中,然后返回 url 应该包含正确的参数....这是一个示例静态 html 页面,您可以使用它来测试安全令牌/安全令牌 ID 组合的 post:

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