2015-04-10 1 views
0


В настоящее время пытается реализовать прозрачную переадресацию с помощью Paypal, но не может получить обратный URL-адрес, чтобы содержать параметры, которые я устанавливаю. Появляется сообщение о том, что paypal удаляет параметры из запроса returnurl, и поэтому мой сайт не работает должным образом после перенаправления. Моя последовательность такова:

1- Сделайте защищенный токен запрос в Paypal, передав returnurl и errorurl как часть запроса маркера.
2- Внесите безопасную величину токена, получаемую с помощью PayPal в моей форме (на которой размещается сообщение непосредственно в paypal).
3- Paypal перенаправляет обратно к ReturnUrl но параметры отсутствуют .... пытаются перенаправить обратно в https://www.somesite.com/site.w?location=results.w&parameter1=value1, но я вместо этого перенаправлены на https://www.somesite.comt/site.w?location=results.w (отсутствует параметр1 = значение1).

Я пробовал url-encoding returnurl, поэтому амперсанды и знак вопроса закодированы, но в соответствии с значениями документации PayPal в возвращаемом URL-адресе не должны быть закодированы.Paypal Transparent Redirect RETURNURL параметры сообщения

Кто-нибудь знает, как я могу получить returnurl, чтобы содержать правильные параметры GET во время переадресации PayPal?

Еще раз спасибо, Тони

ответ

1

Просто следовать (& ->% 26), и добавление длины к параметру RETURNURL действительно работало и действительно передало значение, хотя браузер не правильно взаимодействовал представьте URL-адрес при перенаправлении. Я попробовал еще раз, не кодируя амперсанды, но сохранил длину RETURNURL неповрежденным и параметры URL были сохранены при перенаправлении! Таким образом, моим окончательным решением будет безопасный токен-запрос, содержащий RETURNURL, который содержит функцию длины, чтобы Paypal мог корректно анализировать значение returnurl (поддерживая параметры querystring). Пример следующим образом:

/Opt/pware/бен/завитка -s -S -k --connect тайм-аут 30 --max время 120 -НЫ «X-VPS-КЛИЕНТ-TIMEOUT: 45 "-d" ПАРТНЕР = PayPal & ПОСТАВЩИК = somevendor & USER = someuser & PWD = somepassword & ТЕНДЕРНАЯ = С = & CREATESECURETOKEN У & SECURETOKENID = 0000050 & SILENTTRAN = TRUE & тт = 2 & TRXTYPE = А & 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 должны содержать соответствующие параметры .... Heres статического 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> 
0

Он должен работать, как я проверил в моей тестовой среде, и она работала для меня. Но я передал метку длины каждому параметру в запросе, создав защищенный токен, и сделал кодировку для «&». Как показано ниже:

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

см.прикрепленную изображение тоже:

enter image description here

+0

Великим Я дам этому выстрел сегодня утром я вспомнил, что читал о Функции персональнога длины. re ... еще раз спасибо Eshan Я буду следить за этой нитью, как только решит, что решение работает. Приветствия! Tony –

+0

См. Ответ ниже для решения. Спасибо за вашу помощь Эшан! Ты жжешь! –