Paypal授权登录流程及实现

由于工作项目安排,需要对接Paypal支付,查看了Paypal官方文档,对于英文不好的我简直是折磨。于是去百度有关方面的资料,发现中文资料少得可怜,经过几天的摸索已经实现了功能,现在在这里做一个记录。

1.申请Paypal账号

1.申请账户这一步请自行百度,网上教程很多

2.使用账户创建沙盒APP,注意!我这里使用的是沙盒测试环境

1.登录账户,在网页下方找到开发者,点击进入
2.在右上角找到你的头像,点击My Account
3.进入该页面内,打开My Apps,点击Dedault Application来创建APP,默认情况下是没有的,我这里已经创建好了

Paypal授权登录流程及实现
4.打开你刚刚创建的app,记录下你的clien id和secret,后面会有用到

Paypal授权登录流程及实现
5.在下方找到login in with Paypal,勾选上,点击Adevanced options高级选项

Paypal授权登录流程及实现
6.勾选选项并填写2个url,为什么要填写这2个url,请复制上面的文字并翻译

Paypal授权登录流程及实现
7.在上方的Renturn url中填写你的回调地址,该回调地址的作用是接口返回的code,你可以使用前端地址,也可以使用端地址,code会以参数的形式,添加到你填写的回调地址中。

Paypal授权登录流程及实现
8.在SANDBOS中,打开accounts选项,在下面你能看你到系统为你创建的2个默认账户,使用下面的Personal(个人)账户,可以自己去更改账户的账户名和密码,请自行尝试。记录下账户和密码,后面会用到

Paypal授权登录流程及实现

3.生成前端测试代码

 -https://developer.paypal.com/docs/log-in-with-paypal/reference/button-js-builder/

 打开该地址,生成前端按钮

Paypal授权登录流程及实现

1.最好使用goole浏览器翻译该页面,会简单很多。
2.填写client id 和 scopes
3.auth end point选择sandbox
4.在renturn url中填写你刚刚创建的回调url,这个url可以是前端网页,也可以是后台接口
5.在下方找到生成的代码,新建一个html文件,将生成的代码放进去。
6.打开页面,你就能得到你的paypal按钮了,使用该按钮就能直接调用第三方paypal的登录页面

Paypal授权登录流程及实现

4.根据官方文档提供的接口实现用户信息获取

https://developer.paypal.com/docs/log-in-with-paypal/integrate/
请参照这个地址,认真看完整个文档说明。
1.如果要在正式环境中使用Paypal登录功能,需要7-10天的审核期,具体要求看说明文档,我这里使用的是测试沙盒环境
2.获取授权码:
    a.如果你的上面的配置按钮生成的没有问题,那么你点击按钮之后,就会弹出输入paypal账户密码的框,输入我们前面的测试个人账户的账号密码,你将在回调地址中得到code,如果是前端,那么code将会在url中。
    b.例如:https://myreturnurl.com/?code={authorization_code}&scope=address%20openid%20profile%20email
3.获取访问令牌:
    a.API:https://api-m.sandbox.paypal.com/v1/oauth2/token,
    b.参数2个,分别是code和grant_type,grant_type的值为authorization_code
    c.请求头1个,官方文档写的是'Authorization: Basic {Your Base64-encoded ClientID:Secret}' ,看到这个的时候我是一脸懵b的,其实就是在请求头中加上Authorization参数,值为Basic(这里有一个空格)加上Base64编码的ClientID:Secret。
    d.对,你没有看错,他们两个参数用:连接起来,然后使用Base64编码,前面加上Basic空格
    e.响应参数参考文档
    f.如果你遇到了问题,报错了,请重头在仔细阅读文档,玩一玩大家来找茬的游戏,我是已经玩吐了的
4.将 refresh_token 换成 access_token
    a.API:https://api-m.sandbox.paypal.com/v1/oauth2/token
    b.参数同上,不同的地方在于grant_type,他的值为refresh_token
    c.如果遇到问题,请玩大家来找茬游戏
5.通过access_token来获取用户信息
    a.API:https://api-m.sandbox.paypal.com/v1/identity/oauth2/userinfo?schema=paypalv1.1
    b.请求头参数:
        Authorization: Bearer access_token ,有了上面的经验,我相信你明白我的意思
        Content-Type: application/json
    c.注意这个请求是get方式,其它api都是post
    d.返回结果请仔细查阅文档:https://developer.paypal.com/docs/api/identity/v1/#userinfo_get

后记

我已经把我踩过的坑和应该注意的地方都写在了上面,请自行体会,大家来找茬的游戏我是不太想玩了,已经够够的了。
虽然微不足道,但希望能帮助到大家,前人栽树后人乘凉,我做一次栽树的。
后面还会有Paypal的相关功能的对接,如果时间宽裕,我也会写出来我的整个对接过程。
完了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4
chowjiawei

收藏 以后用(虽然我从不打开收藏夹)

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!