Coldfusion - PayPal express checkout在使用灯箱时返回Invalid Transaction

时间:2014-07-10 17:25:26

标签: jquery paypal coldfusion

我正在编写必须使用ColdFusion完成的购物车的自定义代码。 (我不允许切换到其他任何东西)。我正在尝试使用灯箱实现PayPal快速结账,以方便客户使用,但除了对流程感到沮丧之外,我一直在努力。

没有很多很容易理解的Coldfusion例子;然而,经过长时间的搜索,我已经设法找到足够的代码来组合似乎主要工作的东西。我也经历过PayPal开发者网站及其代码的次数比我记忆中的多,他们似乎认为你不需要任何完整的编码示例。

以下是我使用实时付款网址部分工作的内容。它似乎使用沙箱工作正常,但当我切换到实时环境时失败。

<script type="text/javascript" src="https://www.paypalobjects.com/js/external/dg.js"></script> 


<cfset application.pp.username = "--username--"/>
<cfset application.pp.password = "--password--"/>
<cfset application.pp.signature = "--signature-"/>
<cfset application.pp.id = "--application.id--"/>
<cfset application.pp.version = "114.0"/>

<cfscript>
  stDetails = structNew();
  stDetails.cartTotal = 1.00;
  stDetails.invoiceno = 3456;
</cfscript>

<cfhttp url="https://api-3t.paypal.com/nvp" method="post">
    <!--- auth --->
    <cfhttpparam type="formfield" name="USER" value="#application.pp.username#" />
    <cfhttpparam type="formfield" name="PWD" value="#application.pp.password#" />
    <cfhttpparam type="formfield" name="SIGNATURE" value="#application.pp.signature#" />
    <!--- order info --->
    <cfhttpparam type="formfield" name="METHOD" value="SetExpressCheckout" />
    <cfhttpparam type="formfield" name="VERSION" value="#application.pp.version#" />
    <cfhttpparam type="formfield" name="LOCALE" value="AU" />
    <cfhttpparam type="formfield" name="PAYMENTREQUEST_0_AMT" value="#stDetails.cartTotal#" />
    <cfhttpparam type="formfield" name="PAYMENTREQUEST_0_INVNUM" value="#stDetails.invoiceno#" />
    <cfhttpparam type="formfield" name="PAYMENTREQUEST_0_CURRENCYCODE" value="AUD" />
    <cfhttpparam type="formfield" name="PAYMENTREQUEST_0_DESC" value="your products" />
    <cfhttpparam type="formfield" name="returnURL" value="http://#cgi.server_name#/index.cfm?event=shop-cart-process" />
    <cfhttpparam type="formfield" name="cancelURL" value="http://#cgi.server_name#/index.cfm?event=shop-cart-process" />
</cfhttp>

<body>

<cfoutput>

<cfset myDocument = trim(cfhttp.fileContent)>
#myDocument#<br>

<cfset payPalStruct = structNew()>
<cfloop list="#cfhttp.fileContent#" index="elem" delimiters ="&">
    <cfset payPalStruct[listFirst(elem,'=')] = URLDecode(listLast(elem,'=')) />
</cfloop>

#StructFind(payPalStruct,"token")#<br />


<cfdump var="#payPalStruct#">


http://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=#StructFind(payPalStruct,"token")#

<form action="http://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=#StructFind(payPalStruct,"token")#" target="PPDGFrame" class="standard">
<label for="buy">Buy Now:</label>
<input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif">
<input id="type" type="hidden" name="expType" value="light">
<input id="paykey" type="hidden" name="paykey" value="#StructFind(payPalStruct,"token")#">  
</form>

<script type="text/javascript" charset="utf-8">
var embeddedPPFlow = new PAYPAL.apps.DGFlow({trigger: 'submitBtn'});
</script>

</body>

</cfoutput> 

我正在使用cfhttp和我们的凭据返回一个令牌。那部分就像一个冠军,并将结果输出到页面就好了。当我点击PayPal按钮时,灯箱窗口会弹出但返回

  

此交易无效。请返回收件人的网站   然后再试一次。

我所做的一切都没有改变这个错误。我已经在互联网上搜索任何类型的答案,通常情况下,通常提供的答案是没有返回付费密钥或只是参考PayPal SDK。在这种情况下,付款密钥/令牌被正常返回,并且在由PayPal填充灯箱时执行灯箱本身似乎失败了。

如果有人对这个问题有任何见解,或者正在使用处理快速/自适应支付的Coldfusion代码,那将非常有帮助。对于ColdFusion与PayPal SDK的集成,似乎没有任何简单的教程。

提前谢谢

0 个答案:

没有答案