php - PayPal Express Checkout 调用不会在布局 C 中产生 BAID

标签 php paypal express-checkout recurring-billing

对于他们的网络订阅服务,我的客户完全订阅了 Paypal Payments Pro(又名 Payflow)并且还订阅了 Recurring Billing 附加组件。

我已经能够毫无问题地使用信用卡设置定期计费。但是,我对用于定期计费的 PayPal Express 结账感到困惑。

我遇到的问题是在 Payflow 的“布局 C”上下文中并排集成 PayPal Express Checkout 和 Hosted Credit Card checkout。我似乎没有有办法为布局的两种不同支付方式(投标)中的每一种提供不同的信息。

我已经非常彻底地并反复阅读了文档。不过,我似乎错过了什么。

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

我仔细阅读了 php API 库,但找不到引用资料。有人可以指点我吗?

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

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

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

RESULT=12&PNREF=BJPXXX8333D4&RESPMSG=Declined: 11455-买家不接受账单协议(protocol)

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

第一步:要在“布局 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/协议(protocol))。

第二步:我当前将此授权转换为定期付款的策略(失败)是分析 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

在创建安全 token 的第一步中?

您可以尝试的另一件可能会有所作为的事情是将其作为实际的 NVP 参数包括在内:

&PAYPAL-NVP=Y

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

关于php - PayPal Express Checkout 调用不会在布局 C 中产生 BAID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659325/

相关文章:

php - 如何在 while 循环中连接表中的两列值,如 -product_name(product_quantity), ..... 并存储在变量中

php paypal express结账问题

paypal - Paypal 按钮中高级变量的 HTML 代码

paypal - 甚至可以使用 Express Checkout 进行定期付款吗?

php - 我无法从已经使用 GROUP BY 的表中循环记录

php - 安排 PHP 脚本通过 cron 执行

php artisan migrate 抛出 [PDO 异常] 找不到驱动程序 - 使用 Laravel

paypal - 自适应延迟链式支​​付

Paypal 快速结帐 API : Get transaction total in local currency

php - 实时设置中未调用 PayPal Instant Update CallbackURL