PayPal Oauth上的return_uri无效

时间:2017-08-21 21:38:16

标签: javascript paypal

我正在尝试在网站上设置PayPal登录,并使用PayPal网站上的自定义按钮生成器来创建登录按钮:

<div id="proceed-to-confirmation-page-link" class="text-right">
    <span id="lippButton"></span>
</div>

<script src='https://www.paypalobjects.com/js/external/api.js'></script>
<script>
    paypal.use(['login'], function (login) {
        login.render({
            "appid": "<MY APP ID>",
            "authend": "sandbox",
            "scopes": "openid profile address",
            "containerid": "lippButton",
            "locale": "en-us",
            "text": "Login to PayPal to order",
            "redirect_uri": "<MyRedirectURI>"
        });
    });
</script>

我已经确认appid和redirect_uri是正确的。我尝试了http://localhost:####/myredirecturihttp://www.myproductionsite.com/myredirecturl。我在developer.paypal.com上添加了这两个返回网址,等待了三个小时或更长时间。

无论我做什么,我都会收到错误消息:      对于那个很抱歉      看起来不支持此操作。请返回并报告此错误,以便我们以后可以提供支持。 (client_id或redirect_uri无效)

我理解错误消息的内容,但我已经三次检查这些是正确的。我错过了什么?

我阅读了PayPal的文档,但它非常不合适 - 它解释了应该发生的事情,但几乎没有提供有关如何将授权代码返回给我的网站的任何细节。如果您能指出我进一步的文档,我将非常感激。

2 个答案:

答案 0 :(得分:0)

这是我的问题的部分答案:我曾尝试使用密钥&#34; redirect_uri&#34;而不是&#34; returnurl&#34;因为我曾在某个地方看到别人的东西。事实证明&#34; returnurl&#34;是对的。

<div id="proceed-to-confirmation-page-link" class="text-right">
    <span id="lippButton"></span>
</div>

<script src='https://www.paypalobjects.com/js/external/api.js'></script>
<script>
    paypal.use(['login'], function (login) {
        login.render({
            "appid": "<MY APP ID>",
            "authend": "sandbox",
            "scopes": "openid profile address",
            "containerid": "lippButton",
            "locale": "en-us",
            "text": "Login to PayPal to order",
            "redirect_uri": "<MyRedirectURI>"
        });
    });
</script>

但是,我仍然不知道PayPal如何返回确认用户已登录的授权码。我在会话中看不到任何内容。

答案 1 :(得分:0)

我遇到了同样的问题。 您可能使用错误的应用ID。在https://api.sandbox.paypal.com/v1/oauth2/token上发帖会返回:

{
    "scope": "scopes",
    "nonce": "something",
    "access_token": "something",
    "token_type": "Bearer",
    "app_id": "some id",
    "expires_in": 32400
}

这不是你想要的appid。使用开发人员信息中心中的客户端ID