Безопасный токен Payflow Link не возвращает токен из-за Result=4 (а кто знает что еще?)

Я пытаюсь перейти от устаревшей ссылки Payflow с помощью размещенных страниц к использованию их безопасного метода токена (все еще PayFlow Link) с использованием ColdFusion и ударил стену. Я думаю, что я прошел через все вещи здесь, в стеке, и перепробовал все это, все еще без радости - оооочень.

Я создал форму, просто простой HTML, и он работает как положено

<cfscript>
  variables.pfl_user="suppressed";
  variables.pfl_vendor = "suppressed";
  variables.pfl_partner = "PayPal";
  variables.pfl_pwd = "suppressed";
  variables.pfl_host_addr = "https://payflowlink.paypal.com";
  //variables.pfl_gettoken_host_addr = "https://pilot-payflowpro.paypal.com";
  variables.pfl_gettoken_host_addr = "https://payflowpro.paypal.com";
</cfscript>

<cfoutput>
<form method="post" action="#variables.pfl_gettoken_host_addr#">

<input type="text" name="USER" value="#variables.pfl_user#" />
<input type="text" name="VENDOR" value="#variables.pfl_vendor#" />
<input type="text" name="PARTNER" value="#variables.pfl_partner#" />
<input type="text" name="PWD" value="#variables.pfl_pwd#" />
<input type="text" name="CREATESECURETOKEN" value="Y" />
<input type="text" name="SECURETOKENID" value="#key#" />
<input type="text" name="TRXTYPE" value="S" />
<input type="text" name="AMT" value="24.95" />
<input type="text" name="CURRENCY" value="USD" />
<input type="submit" />
</form>
</cfoutput>

И это прекрасно работает, дает мне именно то, что я ищу. Но... Код cfhttp ниже просто возвращает мой securetokenId и код ошибки, который не имеет смысла..

Код результата 4 означает, что мой AMT неправильно отформатирован

RESULT=4&SECURETOKENID=08646BF7E5BC88E8A44015803CCF54&RESPMSG= Неверное количество

<cfhttp method="post" url="#pfl_gettoken_host_addr#" useragent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.7 (KHTML, like Gecko) Chrome/5.0.391.0 Safari/533.7" >
        <cfhttpparam name="USER" type="formField" value="#variables.pfl_user#">
        <cfhttpparam name="VENDOR" type="formField" value="#variables.pfl_vendor#">
        <cfhttpparam name="PARTNER" type="formField" value="#variables.pfl_partner#">
        <cfhttpparam name="PWD" type="formField" value="#variables.pfl_pwd#">
        <cfhttpparam name="CREATESECURETOKEN" type="formField" value="Y">
        <cfhttpparam name="SECURETOKENID" type="formField" value="#rStr.newTokenKey#">
        <cfhttpparam name="TRXTYPE" type="formField" value="S">
        <cfhttpparam name="AMT" type="formField" value="24.95">
        <cfhttpparam name="CURRENCY" type="formfield" value="USD">


        <cfhttpparam type="header" name="X-VPS-REQUEST-ID" value="#gettickcount()#" >
        <cfhttpparam type="header" name="Accept-Encoding" value="gzip, deflate, sdch, x-gzip, compress, x-compress" >
        <cfhttpparam type="header" name="X-VPS-CLIENT-TIMEOUT" value="10" >
        <cfhttpparam type="header" name="Accept" value="application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5">
        <cfhttpparam type="header" name="Accept-Language" value="en-US,en;q=0.8">
        <cfhttpparam type="header" name="Accept-Charset" value="ISO-8859-1,utf-8;q=0.7,*;q=0.3">
        <cfhttpparam type="header" name="content-type" value="text/name value">
    </cfhttp>

У кого-нибудь есть идеи? Все идеи заголовков взяты из документов PayPal и вещей, которые я нашел здесь, в стеке.

Я должен что-то сделать, у меня есть какой-то экранный душ, использующий мою учетную запись PayPal для проверки его / ее украденных кредитных карт... поэтому я отключил PayPal, пока не внесу изменения. Я должен сделать этот первый вызов на стороне сервера, через сообщение, чтобы "защитить" мои учетные данные

Чтобы ответить на очевидный вопрос заранее:

  1. да, я генерирую новый ключ
  2. да все настроено правильно (согласно PayPal) в моем аккаунте
  3. да, я использую одни и те же переменные (за исключением недавно созданного SECURETOKENID) для обоих запросов

M

** Решение довольно простое; хотя найти актуальную проблему было немного работы. Для всех тегов CFHTTPPARAM type=formfield выберите encoded = "no"

**

1 ответ

Это был случай! RTFM.

** Решение довольно простое; хотя найти настоящую проблему было немного труда, хотя задним числом я должен был сделать это сразу.

РЕШЕНИЕ: Для всех тегов CFHTTPPARAM type=formfield выберите encoded="no"

Чтобы найти проблему, которую я опубликовал со страницы на моем сервере разработки, на страницу отслеживания на моем сервере разработки, где я использовал GetHttpRequestData(), чтобы выгрузить то, что я отправлял. Как только я увидел кодировку, я понял, в чем проблема, и оттуда решение было простым.

Другие вопросы по тегам