一年多以来,我一直在运行相同的代码来使用 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 文档相对应:
文档清楚地说明了这些值是必需的。这在以前不是必需的,因为我假设出于某种原因指定选项的事实覆盖了这一点。然而,情况已不再如此。因此,我尝试添加 A3、P3 和 T3 HTML 变量,然后收到此错误:“您无法为订阅指定 A3/P3/T3 和选项选择。” 那时,我尝试删除选项表单域并能够生成一个订阅按钮,但没有下拉菜单,正如预期的那样。我随后尝试使用 HTML 变量 on0、os0、option_select0 和 option_amount0 创建一个选项字段,但这没有效果,我看到相同的按钮没有下拉菜单。
那么如何使用 BMCreateButton NVP API 生成带有选项下拉菜单的订阅按钮呢?我尝试使用按钮管理器毫无问题地创建一个,但是我需要传递一个自定义字段并希望使用加密按钮来执行此操作。现在我上面的例子只是使用 CLEARTEXT 进行调试。这还有可能吗?