Php PayPal Express结账呼叫未在布局C中生成BAID

Php PayPal Express结账呼叫未在布局C中生成BAID,php,paypal,express-checkout,recurring-billing,Php,Paypal,Express Checkout,Recurring Billing,对于他们的网络订阅服务,我的客户完全订阅了Paypal Payments Pro(也称为Payflow),并且还订阅了定期计费附加组件 我已经能够使用信用卡设置定期账单,没有问题。然而,我对PayPal Express定期结账感到困惑 我遇到的问题是,在Payflow的“布局C”中,PayPal Express Checkout和托管信用卡Checkout并排集成。我似乎没有办法为布局的两种不同支付方式(投标)提供不同的信息 我已经非常彻底地、反复地阅读了文档。不过,我似乎错过了一些东西 Pa

对于他们的网络订阅服务,我的客户完全订阅了Paypal Payments Pro(也称为Payflow),并且还订阅了定期计费附加组件

我已经能够使用信用卡设置定期账单,没有问题。然而,我对PayPal Express定期结账感到困惑

我遇到的问题是,在Payflow的“布局C”中,PayPal Express Checkout和托管信用卡Checkout并排集成。我似乎没有办法为布局的两种不同支付方式(投标)提供不同的信息

我已经非常彻底地、反复地阅读了文档。不过,我似乎错过了一些东西

  • PayPal Pro/Payflow文档:开发者指南
  • PayPal Pro/Payflow文档:快速结帐
  • PayPal Pro/Payflow文档:定期计费快递
  • 支付流结账(PDF上次更新日期:2013年6月)
我仔细阅读了PHPAPI库,没有找到参考资料。有什么东西可以让人指给我看吗

当我使用安全令牌并使用布局C生成iframe时,该布局会自动生成一个具有1的两层堆栈。PayPal Express在顶部和2处结账。信用卡结账在底部。问题仍然是这两个独立的组件似乎需要不同的cURL调用(使用不同的NVP),我不知道如何在布局中为表单提供单独的调用

我似乎缺少一个更高层次的概念。(请记住,我大致了解爱因斯坦的东西。这让我更加沮丧,因为我无法理解贝宝的东西!)

为了让您更好地了解我目前正在尝试的内容,以下是一些详细信息: 我尝试假设使用布局C自动初始化BAID。这似乎是一个很好的假设,因为授权确实在POST变量中返回了一个令牌。但是,使用此令牌将返回错误结果:

RESULT=12&PNREF=bjpxx8333d4&RESPMSG=拒绝:11455买方未接受账单协议

以下是我目前正在做的事情:

第一步:要获得“布局C”中的付款表单,以及两种付款方式(快速结帐和信用卡),我将提交这些NVP,并且仅提交这些NVP:

USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&CREATESECURETOKEN=Y
&SECURETOKENID=randomlygenerated
&TRXTYPE=A
&AMT=8.95
&CURRENCY=USD
&CSCREQUIRED=TRUE
&EMAIL=buyersemail@email.com
&FIRSTNAME=namelikeBob
&LASTNAME=namelikeDobbs
USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&TRXTYPE=R
&ACTION=A
&ORIGID=fromPayPalsPOSTedPNREF
&START=aworkingdate
&TENDER=C
&PROFILENAME=Monthly Subscription
&PAYPERIOD=MONT
&TERM=0 // continue all subscriptions until the client deactivates  
&AMT=8.95
&CURRENCY=USD
这项工作的目的是:

  • 在布局C中创建表单
  • 单击“使用贝宝结账”按钮
  • 成功登录PayPal
  • 确认金额并单击“立即付款”,然后
  • 在设置定期计费系统的第二步(无论是计费配置文件还是BAID/协议)返回我的客户站点
第二步:我目前将此授权转换为定期付款的策略(失败)是分析PayPal发送回我的成功页面的帖子中的投标价值。然后,根据该值是“C”还是“P”,我以不同的方式设置定期付款

我已成功使用以下NVP设置了信用卡(TENDER=C)定期付款模式:

USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&CREATESECURETOKEN=Y
&SECURETOKENID=randomlygenerated
&TRXTYPE=A
&AMT=8.95
&CURRENCY=USD
&CSCREQUIRED=TRUE
&EMAIL=buyersemail@email.com
&FIRSTNAME=namelikeBob
&LASTNAME=namelikeDobbs
USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&TRXTYPE=R
&ACTION=A
&ORIGID=fromPayPalsPOSTedPNREF
&START=aworkingdate
&TENDER=C
&PROFILENAME=Monthly Subscription
&PAYPERIOD=MONT
&TERM=0 // continue all subscriptions until the client deactivates  
&AMT=8.95
&CURRENCY=USD
然而,贝宝(TENDER=p)BAID失败了。同样,这些NVP可能不是问题所在。可能是我在以前的请求中没有找到发送
BILLINGTYPE=merchantificatedbilling
的方法:

USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&TRXTYPE=A
&ACTION=X
&START=aworkingdate
&TENDER=P
&TOKEN=fromPayPalsPOSTedTOKEN
&PAYPERIOD=MONT
&TERM=0 // continue all subscriptions until the client deactivates  
&AMT=8.95
&CURRENCY=USD

这里似乎有很多细节,但如果我遗漏了什么,请让我知道,我会立即提供信息

您是否尝试过实际放置:

&BILLINGTYPE=MerchantInitiatedBilling
&BA_DESC=ADescriptionIsRequired
在创建安全令牌的第一步中

您可以尝试的另一件可能会有所不同的事情是,作为实际的NVP参数包括:

&PAYPAL-NVP=Y

过去的做法是告诉Payflow将任何额外的参数(甚至是无法识别的参数)转发到PayPal,并给出PayPal的完整响应。

由Jove,我认为您已经破解了它!你的第一个建议产生了积极的效果。我将对它进行大量测试,但如果一切顺利,我不会忘记接受这一点。谢谢。为了清楚起见,为了不让我的OP中的任何信息造成混乱,这里是我现在随请求传递的完整的15个NVP<代码>用户、供应商、合作伙伴、PWD、TRXTYPE、TENDER、BILLINGTYPE、CURRENCY、RETURNURL、CANCELURL、ERRORURL、BA_DESC、CREATESECURETOKEN、SecureTokeId、AMT似乎缺少
BA_DESC
元素。这就像一种魅力,而且——与当前所有PayPal文档相反——一步到位。希望这能帮助下一个用户!