Paypal授权登录流程及实现

PHP技术
714
0
0
2022-06-22

由于工作项目安排,需要对接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的相关功能的对接,如果时间宽裕,我也会写出来我的整个对接过程。

完了。