由于Result = 4,Payflow Link Secure Token没有返回令牌(谁知道还有什么?)

时间:2014-02-22 06:57:05

标签: paypal coldfusion payflowpro payflowlink

我试图使用托管网页从传统的Payflow Link转移到使用ColdFusion的安全令牌方法(仍然是PayFlow Link),并且已经碰壁了。我想我已经通过Stack上的所有东西,并尝试了所有这些,仍然没有快乐 - 所以。

我创建了一个表单,只是简单的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&amp; SECURETOKENID = 08646BF7E5BC88E8A44015803CCF54&amp; 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>

任何人都有一些想法?所有Header想法都来自PayPal文档和我在Stack上找到的东西。

我必须做点什么,我有一些使用我的PayPal帐户进行屏幕刮板冲洗来测试他/她被盗的信用卡。所以我关闭了PayPal,直到我做出改变。我必须通过一个帖子“保护”我的凭据

,首先调用服务器端

预先回答这个显而易见的问题:

  1. 是的,我正在生成一个新密钥
  2. 是的,我的帐户
  3. 中的所有内容都已正确设置(根据PayPal)
  4. 是的,我对两个请求使用相同的变量(新生成的SECURETOKENID除外)
  5. 中号

    **解决方案非常简单;虽然找到实际问题是有点工作。对于所有CFHTTPPARAM type = formfield标记,请选择encoded =“no”

    **

1 个答案:

答案 0 :(得分:0)

这是!RTFM的案例。

**解决方案非常简单;虽然找到实际问题是有点工作,但事后我应该立即做到这一点。

解决方案:对于所有CFHTTPPARAM type = formfield标签,请选择encoded =“no”

要找到我从我的开发服务器上的页面发布到我的开发服务器上的捕获页面的问题,我使用GetHttpRequestData()来转储我发送的内容。一旦我看到编码,我就知道问题是什么,从那里修复很简单。