对于他们的网络订阅服务,我的客户完全订阅了Paypal Payments Pro(a.k.a.Payflow),并且还订阅了Recurring Billing插件。
我已经能够使用信用卡设置定期结算没有问题。但是,我对PayPal Express结账的重复计费感到困惑。
我遇到的问题是在Payflow的“布局C”的背景下,将PayPal Express Checkout和托管信用卡结账并排整合。我似乎没有办法为每种布局的两种不同的付款方式(投标)提供不同的信息。
我已经非常彻底地阅读了文档,并且反复阅读。我似乎错过了一些东西。
我已经仔细阅读了php API库,但找不到引用。那里有人可能会指点我吗?
当我使用安全令牌并生成带有布局C的iframe时,该布局会自动生成一个双层堆栈,其中1.顶部是PayPal Express Checkout,底部是2。信用卡签出。问题仍然是两个独立的组件似乎需要不同的cURL调用(具有不同的NVP),我知道无法在布局中提供对表单的单独调用。
我似乎缺少一个更高层次的概念。 (请记住,我 - 粗略地 - 理解爱因斯坦的东西。这让我更加沮丧,因为我无法理解PayPal的东西!)
为了让您更好地了解我当前正在尝试的内容,以下是这些细节:我尝试假设使用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 protected]
&FIRSTNAME=namelikeBob
&LASTNAME=namelikeDobbs
这适用于:
第二步:我将当前授权转换为定期付款的当前策略(失败)是分析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
这里似乎有很多细节,但如果我遗漏了任何东西,请告诉我,我会提供信息!
你有没有尝试过实际放置:
&BILLINGTYPE=MerchantInitiatedBilling
&BA_DESC=ADescriptionIsRequired
在创建安全令牌的第一步?
您可以尝试的另一件事可能会产生影响,包括,作为一个实际的NVP参数:
&PAYPAL-NVP=Y
以前的做法是告诉Payflow将任何额外的参数(甚至是未识别的参数)转发到PayPal,并从PayPal提供完整的响应。