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

标签 paypal coldfusion payflowpro payflowlink

我试图从使用托管页面的旧版 Payflow Link 转移到使用 ColdFusion 的安全 token 方法(仍然是 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&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 文档和我在 Stack 上找到的东西。

我必须做点什么,我有一些屏幕抓取程序正在使用我的 PayPal 帐户测试他/她被盗的信用卡..所以我已经关闭了 PayPal,直到我做出改变。我必须首先调用服务器端,通过一个帖子来“保护”我的凭据

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

  1. 是的,我正在生成一个新 key
  2. 是的,我的账户中的一切都已正确设置(根据 PayPal)
  3. 是的,我对两个请求使用相同的变量(新生成的 SECURETOKENID 除外)

中号

**解决方案非常简单;尽管找到实际问题需要一些工作。对于所有的 CFHTTPPARAM type=formfield 标签,选择 encoded="no"

**

最佳答案

这是 !RTFM 的一个例子。

**解决方案非常简单;尽管找到真正的问题需要做一些工作,但事后看来我应该马上就这样做。

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

为了找到问题,我从我的开发服务器上的一个页面发布到我的开发服务器上的一个捕获页面,我在该页面上使用 GetHttpRequestData() 来转储我发送的内容。看到编码后,我就知道问题出在哪里,然后修复就很简单了。

关于paypal - 由于 Result=4,Payflow Link Secure Token 没有返回 token (谁知道还有什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950968/

相关文章:

javascript - 使用 jquery 创建评论框并在 Coldfusion 中工作

angular - 从 Angular 4 应用程序向 Paypal Payflow API 发布请求时,在控制台日志中出现 Access-Control-Allow-Origin 错误

php - IPN Paypal "official"示例代码不起作用

paypal - 在哪里可以查看 "Sandbox"付款列表?

javascript - 当通过 cfajaxproxy 从 javascript 调用时,cfc 函数不接收参数

PayPal 将授权交易转换为定期付款配置文件

SDK 中的 PayPal Express Checkout useraction 和 paymenttype 参数

laravel-4 - 如何使用 OmniPay 获得 PayPal_Express 响应?

android - PayPal Android SDK 不适用于美元以外的其他货币

hash - 如何为http请求计算亚马逊的MD5哈希值