【问题标题】:PayPal REST API: Make requests on behalf of a merchantPayPal REST API:代表商家发出请求
【发布时间】:2020-08-10 16:35:19
【问题描述】:

我正在将我们的软件(它使用 PayPal SOAP API 代表商家向 PayPal 发出请求)迁移到 PayPal REST API 基础架构。

我正在使用我的 PayPal 开发者帐户的客户端 ID/密码从沙盒获取不记名令牌,使用 https://api.sandbox.paypal.com/v1/oauth2/token

然后我正在使用我们刚刚获得的不记名令牌致电https://api.sandbox.paypal.com/v2/checkout/orders,代表商家发出请求。我正在使用带有以下(编码)JWT-Token 的 PayPal-Auth-Assertion 标头:

Header:
    {
  "typ": "JWT",
  "alg": "HS256"
}
Body: {
  "email": "[merchant e-mail]",
  "iss": "[my client id]"
}

“商户邮箱”是我在https://developer.paypal.com/developer/accounts/开设的沙盒账户之一

作为回报,我得到一个(400) Bad Request {"error":"invalid_request","error_description":"No permissions to set target_client_id"}

沙盒帐户似乎必须有一个额外的步骤才能向开发者帐户授予权限。对于 SOAP API,我可以在以下屏幕 中添加第三方的用户名。然后我可以使用与X-PAYPAL-SECURITY-USERID 的标头值相同的用户名。但是,我似乎无法以相同的方式链接沙盒帐户,因为主帐户(我从中获取客户端 ID 的那个)没有“第三方用户名”。

究竟需要进行哪些配置才能允许对 REST API 进行这些类型的第 3 方调用?

【问题讨论】:

    标签: paypal paypal-sandbox paypal-rest-sdk


    【解决方案1】:

    我正在使用带有以下(编码)JWT-Token 的 PayPal-Auth-Assertion 标头:

    您需要成为 PayPal 合作伙伴才能使用此类功能。如果您想成为合作伙伴,请联系 PayPal。

    如果您想使用他们普遍可访问的 API,您有两种选择。

    1. 让每个商家通过 https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fapplications 创建自己的 REST API 应用程序,并将其实时客户端 ID 和密码复制粘贴到您的配置中。这是最好的解决方案,也是你应该追求的解决方案。
    2. 使用 payee 对象:https://developer.paypal.com/docs/checkout/integration-features/custom-payee/,这使您的控制权更少(例如,无法获取授权或发出退款)

    【讨论】:

    • “您需要成为 PayPal 合作伙伴才能使用该类型的功能。”:您是指 developer.paypal.com/docs/commerce-platform 吗?在他们的工作流程图 (developer.paypal.com/img/docs/partners/setup-flow.png) 中,我们可以假设我们不需要它来进行开发,只有在上线时才需要它。不是这样吗?
    • 要在沙盒中测试商务平台功能,您本身不需要批准,但您需要指导和设置
    • 仅供参考,实际问题似乎是我的开发者帐户未标记为“企业帐户”。一旦我升级了帐户,API 就可以工作了 :-) 我只希望错误消息会更好,这样可以节省我 2 天的时间来尝试找出问题所在。
    猜你喜欢
    • 2014-03-20
    • 2019-05-08
    • 2020-07-28
    • 2013-05-09
    • 2013-10-01
    • 2014-02-22
    • 1970-01-01
    • 2017-02-12
    • 2020-02-08
    相关资源
    最近更新 更多