由于工作项目安排,需要对接Paypal支付,查看了Paypal官方文档,对于英文不好的我简直是折磨。于是去百度有关方面的资料,发现中文资料少得可怜,经过几天的摸索已经实现了功能,现在在这里做一个记录。
1.申请Paypal账号
1.申请账户这一步请自行百度,网上教程很多
2.使用账户创建沙盒APP,注意!我这里使用的是沙盒测试环境
1.登录账户,在网页下方找到开发者,点击进入
2.在右上角找到你的头像,点击My Account
3.进入该页面内,打开My Apps,点击Dedault Application来创建APP,默认情况下是没有的,我这里已经创建好了
4.打开你刚刚创建的app,记录下你的clien id和secret,后面会有用到
5.在下方找到login in with Paypal,勾选上,点击Adevanced options高级选项
6.勾选选项并填写2个url,为什么要填写这2个url,请复制上面的文字并翻译
7.在上方的Renturn url中填写你的回调地址,该回调地址的作用是接口返回的code,你可以使用前端地址,也可以使用端地址,code会以参数的形式,添加到你填写的回调地址中。
8.在SANDBOS中,打开accounts选项,在下面你能看你到系统为你创建的2个默认账户,使用下面的Personal(个人)账户,可以自己去更改账户的账户名和密码,请自行尝试。记录下账户和密码,后面会用到
3.生成前端测试代码
-https://developer.paypal.com/docs/log-in-with-paypal/reference/button-js-builder/
打开该地址,生成前端按钮
1.最好使用goole浏览器翻译该页面,会简单很多。
2.填写client id 和 scopes
3.auth end point选择sandbox
4.在renturn url中填写你刚刚创建的回调url,这个url可以是前端网页,也可以是后台接口
5.在下方找到生成的代码,新建一个html文件,将生成的代码放进去。
6.打开页面,你就能得到你的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的相关功能的对接,如果时间宽裕,我也会写出来我的整个对接过程。
完了。