我正在编写必须使用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的集成,似乎没有任何简单的教程。
提前谢谢