使用setExpressCheckout API调用PayPal无缝结账(使用PayPal登录)

nor*_*key 1 paypal

我正在尝试在我们的网站中集成无缝结账客户流程,客户可以使用PayPal登录,然后继续进行付款而无需再次登录.

我已经使用PayPal Rest应用程序登录并正常运行.我也有我的Classic API(使用merchantsdk库)调用setExpressCheckout工作.

文档说明我应该传入IDENTITYACCESSTOKEN参数.但是,这似乎在sdk中不可用.我错过了什么吗?

亲切的问候,达米安

lea*_*_19 5

我知道这已经很晚了但是答案是这样的:(希望它有助于某人)

我从一开始就概述了所有步骤如下:(假设您已经有一个基本的expresschekout应用程序工作,并且您希望将Login与PayPal集成以进行无缝结账)

1)在developer.paypal.com上注册登录PayPal REST应用程序:制作一个新的REST应用程序,填写所需的详细信息.如果您想通过expresscheckout使用paypal登录,请确保启用无缝结账.您可以在Login with PayPal下找到它 - 点击它旁边的高级选项.此外,可用于检查的参数如基本认证,个人信息,地址信息等被称为范围,并且稍后将具有重要性.你可以检查所有这些.此外,请务必提供隐私信息网址和用户协议网址.没有它们,应用程序将无法运行.(出于开发目的,您网站的网址说https://example.com/privacy.html等可以使用.)

2)在您的网站上嵌入Login with PayPal按钮(有关详细信息,请参阅:https://developer.paypal.com/docs/integration/direct/identity/button/),这里是动态构建器表单的链接:https://developer.paypal.com/docs/integration/direct/identity/button-js-builder/

这是生成的代码的样子:

<span id="myContainer"></span>
<script src="https://www.paypalobjects.com/js/external/api.js"></script>
<script>
            paypal.use( ["login"], function(login) {
              login.render ({
                "appid": "isaufdiudshfjdsfkjhuwAHsgdnGn",
                "authend": "sandbox",
                "scopes": "openid profile email address phone https://uri.paypal.com/services/paypalattributes https://uri.paypal.com/services/expresscheckout",
                "containerid": "myContainer",
                "locale": "en-us",
                "returnurl": "https://localhost/dp/loggedin.php"
              });
            });
            </script>
Run Code Online (Sandbox Code Playgroud)

当您在app中检查developer.paypal.com上提供的所有范围(基本身份验证,地址等)时,这些范围是正确的.范围" https://uri.paypal.com/services/expresscheckout "用于无缝检查.警告:如果开发人员paypal网站和此生成的代码中的范围不同,那么您将收到范围不匹配错误.

3)因此,如果一切正常,在此之后你应该在你的网站上有一个"使用PayPal登录"按钮,当你点击它时,你应该看到一个Paypal登录窗口打开.当您使用某个沙盒帐户登录时(假设您使用的是沙箱),那么您将获得不同形式,当您表示同意并继续时,它应该会返回到返回URL.这是核心部分:在返回URL中,他们将向您发送一个名为"code"的参数.这是授权码.

4)现在您必须从授权代码中获取身份访问令牌.以下是此步骤:https://developer.paypal.com/docs/api/#grant-token-from-authorization-code

以及适合我的示例请求(替换为您的凭据):

 curl -v --insecure api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice -H "Accept: application/json" -H "Accept-Language: en_US" -d "client_id=PjewirksjfhnIksjdlkjskfljds" -d "client_secret=Abcdsffudkjjhirgjkljgkldfjglkdlgd" -d "grant_type=authorization_code" -d "code=asdkajhAkjdksA" gYIXH-FJb1-piZEAXIif4PGAumOeEenS9cjX4rdKfOi6tyuzqRoyGJvFhzrIdI8JYO2aDO3Emtwdv1w??L0SSksPbcJJsHsnEKrCjEsh8yscuotBS7vV3HSSLLnl" 
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在"access_token"字段中获得Identity Access Token.您还将获得refresh_token(稍后解释)

4)此access_token是您在setexpresscheckout请求中传递的内容.可以在此页面上找到示例请求:https://developer.paypal.com/docs/integration/direct/identity/seamless-checkout/

5)另外,请记住,access_token会在一段时间后到期.因此,您需要使用步骤3中提到的刷新令牌来获取新的访问令牌.但是对于基本工作,直到第4步应该让您通过.祝一切顺利 :)