2

一年多以来,我一直在运行相同的代码来使用 BMCreateButton NVP API 生成订阅按钮。出于某种原因,这最近停止了工作。这是我当前用 ColdFusion 编写的 HTTP 请求。request.setup.paypal 引用设置结构,request.user 是定义用户会话的对象。

<cfset buttonvars = [
    'item_name=Membership',
    'src=1',

    'currency_code=USD',
    'no_note=1',
    'no_shipping=1',

    'rm=0',
    'return=#request.setup.paypal('return')#',
    'cancel_return=#request.setup.paypal('cancel_return')#',
    'notify_url=#request.setup.paypal('notify_url')#',

    'custom=#request.user.getUserID()#'

] />

<cfhttp method="post" url="#request.setup.paypal('host')#">

    <cfhttpparam type="formfield" name="USER" value="#request.setup.paypal('user')#" />
    <cfhttpparam type="formfield" name="PWD" value="#request.setup.paypal('pwd')#" />
    <cfhttpparam type="formfield" name="SIGNATURE" value="#request.setup.paypal('signature')#" />
    <cfhttpparam type="formfield" name="VERSION" value="65.2" />

    <cfhttpparam type="formfield" name="METHOD" value="BMCreateButton" />
    <cfhttpparam type="formfield" name="BUTTONTYPE" value="SUBSCRIBE" />
    <cfhttpparam type="formfield" name="BUTTONSUBTYPE" value="SERVICES" />
    <cfhttpparam type="formfield" name="BUTTONCODE" value="CLEARTEXT" /> <!--- CLEARTEXT, ENCRYPTED --->

    <cfhttpparam type="formfield" name="OPTION0NAME" value="Membership Duration" />

    <cfhttpparam type="formfield" name="L_OPTION0SELECT0" value="Monthly Membership" />
    <cfhttpparam type="formfield" name="L_OPTION0PRICE0" value="20.00" />
    <cfhttpparam type="formfield" name="L_OPTION0BILLINGPERIOD0" value="Month" />

    <cfhttpparam type="formfield" name="L_OPTION0SELECT1" value="Annual Membership" />
    <cfhttpparam type="formfield" name="L_OPTION0PRICE1" value="200.00" />
    <cfhttpparam type="formfield" name="L_OPTION0BILLINGPERIOD1" value="Year" />


    <cfloop from="1" to="#arrayLen(buttonvars)#" index="buttonvar">
        <cfhttpparam type="formfield" name="L_BUTTONVAR#buttonvar-1#" value="#buttonvars[buttonvar]#" />
    </cfloop>

</cfhttp>

当我提出这个请求时,我收到一个失败的回复,说“您必须为订阅按钮的 A3、P3 和 T3 参数指定有效值”。这显然与此处的 API 文档相对应:

https://developer.paypal.com/webapps/developer/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/#id08A6HI00JQU

文档清楚地说明了这些值是必需的。这在以前不是必需的,因为我假设出于某种原因指定选项的事实覆盖了这一点。然而,情况已不再如此。因此,我尝试添加 A3、P3 和 T3 HTML 变量,然后收到此错误:“您无法为订阅指定 A3/P3/T3 和选项选择。” 那时,我尝试删除选项表单域并能够生成一个订阅按钮,但没有下拉菜单,正如预期的那样。我随后尝试使用 HTML 变量 on0、os0、option_select0 和 option_amount0 创建一个选项字段,但这没有效果,我看到相同的按钮没有下拉菜单。

那么如何使用 BMCreateButton NVP API 生成带有选项下拉菜单的订阅按钮呢?我尝试使用按钮管理器毫无问题地创建一个,但是我需要传递一个自定义字段并希望使用加密按钮来执行此操作。现在我上面的例子只是使用 CLEARTEXT 进行调试。这还有可能吗?

4

0 回答 0