为啥 setLandingPageType("billing") 在沙盒中工作,但在 PAYPAL PHP REST API SDK WebProfile 中的实时版本中不工作

Posted

技术标签:

【中文标题】为啥 setLandingPageType("billing") 在沙盒中工作,但在 PAYPAL PHP REST API SDK WebProfile 中的实时版本中不工作【英文标题】:Why is setLandingPageType("billing") working in Sandbox but not in Live-Version in PAYPAL PHP REST API SDK WebProfile为什么 setLandingPageType("billing") 在沙盒中工作,但在 PAYPAL PHP REST API SDK WebProfile 中的实时版本中不工作 【发布时间】:2015-12-17 12:12:59 【问题描述】:

我一直在使用 Paypal Payments 处理以下工作流程。 我的意图是将客户发送到访客支付网站。他一开始不应该看到贝宝登录页面。 这是因为许多人不知道他们可以在不注册账户的情况下使用信用卡或银行转账支付。 我在沙箱中测试了我的整个过程并且它有效。然后我改成了live版,$flowConfig->setLandingPageType("billing"); 不再影响登陆页面了。

工作流程:

我准备了一些new Webprofile(),用于在贝宝付款批准网站(徽标等,商店名称)上进行设置。它被保存一次并由一些字符串标识(XX-XXXX-XXXX-XXXX-XXX) 我准备了一笔交易并将其发送到贝宝。 然后将客户发送到 paypal.com 上的特定付款批准站点 客户应该在那里进行身份验证 客户被送回我的网站

为了预设视觉选项,我预定义了一些 Webprofile。

$flowConfig = new \PayPal\Api\FlowConfig();
$flowConfig->setLandingPageType("billing");

$presentation= new \PayPal\Api\Presentation();
...
$inputFields= new \PayPal\Api\InputFields();
...

$webProfile = new \PayPal\Api\WebProfile();
$webProfile->setName("GuestPaymentProfileNameasdf")
->setFlowConfig($flowConfig)
->setPresentation($presentation)
->setInputFields($inputFields);


$webProfile->create($APIauth)

此创建命令返回一些字符串 (XX-XXXX-XXXX-XXXX-XXX),该字符串保存在 paypal 中,以识别我放入系统的这组选项。

...
$payment->setExperienceProfileId('XX-XXXX-XXXX-XXXX-XXX'); //profile ID 
...

有谁知道我在这里做错了什么?正如所写,这完全在沙盒中工作,但是当我切换到 LIVE 时,客户总是被发送到正常的登录页面。

还有其他方法可以做到这一点吗? 我错过了一些暗示或贬低的迹象吗?

【问题讨论】:

【参考方案1】:

我一直在努力解决这个问题,导致这种行为的原因似乎是我在德国的 Paypal 帐户受到限制。

起初我可以购买as a guest。然后这个选项消失了——可能是我的沙盒注入 cookie 过期了。 所以我今天打电话给Paypal的支持,问了一些具体的问题。

我对这个访客购买功能有其他期望,因为我已经习惯了无限制的美国沙盒帐户。当您从无限制沙箱更改为受限真实账户时,我个人的混淆可能是由选项/限制/限制的内部混淆引起的。 问题是,我 should not 在德国看到过这个 guest-billing-page - 但它确实有效......上线后一次。

【讨论】:

以上是关于为啥 setLandingPageType("billing") 在沙盒中工作,但在 PAYPAL PHP REST API SDK WebProfile 中的实时版本中不工作的主要内容,如果未能解决你的问题,请参考以下文章

ssl错误为啥用pip安装

为啥 Google 会使用字体标签?

为啥 iPad 有时不触发 onload 事件?

为啥我不能将字符串传递给函数 GetDriveTypesA()?

为啥我的数据表单元格返回空值?

执行者完成服务?如果我们有invokeAll,为啥还需要一个?