PayPal Express Checkout调用在布局C

时间:2019-04-12 20:57:25

标签: php paypal express-checkout recurring-billing

对于他们的Web订阅服务,我的客户已完全订阅Paypal Payments Pro(又称Payflow),并且还订阅了“定期结算”附加组件。

我已经可以使用信用卡设置定期结算了。但是,我对PayPal Express结帐的重复计费感到困惑。

我遇到的问题是在Payflow的“布局C”的背景下,PayPal Express Checkout和托管信用卡结帐的并排集成。我似乎没有可以为Layout的两种不同付款方式(投标)分别提供不同的信息。

我已经很反复地仔细阅读了文档。我似乎还是错过了一些东西。

  • PayPal Pro / Payflow文档:开发人员指南
  • PayPal Pro / Payflow文档:快速结帐
  • PayPal Pro / Payflow文档:定期结算Express
  • 结帐(PDF,最新更新:2013年6月)

我仔细阅读了php API库,但找不到参考资料。有人可能会指向我吗?

当我使用安全令牌并使用布局C生成iframe时,该布局会自动生成一个两层的堆栈,其顶部为1. PayPal Express Checkout,底部为2. credit card checkout。问题仍然在于,这两个单独的组件似乎需要不同的cURL调用(具有不同的NVP),而且我不知道无法对布局中的表单提供单独的调用。

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

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

RESULT=12&PNREF=BJPXXX8333D4&RESPMSG=Declined: 11455-Buyer did not accept billing agreement

这是我目前正在做的事情:

第一步:要使用两种付款方式(快速结帐和信用卡)在“布局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

这适用于:

  • 在布局C中创建表单,
  • 点击“使用PayPal结帐”按钮,
  • 成功登录到PayPal,
  • 确认金额,然后单击“立即付款”,然后
  • 将返回我的客户的站点,以进行设置定期结算系统的第二步(无论是结算资料还是BAID /协议)。

第二步:我目前用于将此授权转换为重复付款的策略(失败)是分析PayPal发送回我的成功页面的POST中的TENDER值。然后,我根据该值是“ C”还是“ P”来设置经常性付款。

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

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

但是PayPal(TENDER = P)BAID失败。同样,这些NVP可能不是问题。可能是我在较早的请求中找不到发送BILLINGTYPE=MerchantInitiatedBilling的方法:

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

这里似乎有很多细节,但是如果我遗漏了什么,请告诉我,我将提供信息提示!

1 个答案:

答案 0 :(得分:1)

您是否尝试过实际放置:

&BILLINGTYPE=MerchantInitiatedBilling
&BA_DESC=ADescriptionIsRequired

创建安全令牌的第一步?

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

&PAYPAL-NVP=Y

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