ColdFusion(CFML)仅在具有Paypal API的移动设备上丢失会话变量

时间:2019-01-26 18:19:54

标签: paypal coldfusion session-variables cfml paypal-pdt

好的,当买家从Paypal退回PDT付款时,我似乎正在丢失会话变量。任何普通的浏览器都不会发生这种情况。我的问题是我该如何将会话信息发送到Paypal,并在他们将用户发送回站点时让它们返回。请查看下面的代码,该代码可能会提供更多信息。

<cfform name="CustomerInfo" action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <!--- Paypal cart setup ---> 
    <input type="hidden" name="cmd" value="_cart">
    <input type="hidden" name="upload" value="1">
    <input type="hidden" name="business" value="Beantownaquatics@gmail.com">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="return" value="http://www.beantownaquatics.com/checkoutcomplete.cfm">

<cfset ppHostname = "www.paypal.com">
<CFHTTP url="https://#ppHostname#/cgi-bin/webscr" method="POST" resolveurl="no"> 
    <cfhttpparam name="Host" type="header"    value="#ppHostname#">
    <cfhttpparam name="cmd"  type="formField" value="_notify-synch">
    <cfhttpparam name="tx"   type="formField" value="#txToken#">
    <cfhttpparam name="at"   type="formField" value="#authToken#">
</CFHTTP>

我认为将会话传递给Paypal最为简单,但是我无法使其正常工作。我还考虑过将JSON字符串插入数据库,并在返回时将其传递回用户。处理我的库存更新。

任何建议都会在这里停留几天。

1 个答案:

答案 0 :(得分:2)

您需要使用一个名为“ custom”的字段。

<input type="hidden" name="custom" value="value1|value2|value3">

我通常使用管道将值分割,例如'|',然后在返回时使用以下方法将它们分开:

<cfset content = URLdecode(cfhttp.FileContent)>

<cfloop list="#content#" index="curLine" delimiters="#chr(10)#">
    <cfif listGetAt(curLine,1,"=") is "custom">
        <cfset values=listGetAt(curLine,2,"=")>
        <cfset value1=listGetAt(values,1,"|")>
        <cfset value2=listGetAt(values,2,"|")>
        <cfset value3=listGetAt(values,3,"|")>
    </cfif>
</cfloop>