背景
在项目中对接Paypal支付,一开始在网上查了好久,发现资料少,而且陈旧,甚至我都没弄清楚我应该哪个SDK。
我到 maven 中央仓库中,搜索 com.paypal.sdk,能查出不少结果,据我所知,至少有三个sdk可以从后端访问到Paypal:
- paypal-core:非常陈旧,2016年就停止更新了,但网上还有一些关于它的教程
- checkout-sdk:我一开始使用的sdk,访问的也是v2版本的接口,也对接成功了,可以使用,但最新更新的时间也停留在了2022年,应该会逐渐废弃掉
- paypal-server-sdk:是官网最新的服务端SDK,官方案例是配合前端js sdk,我咨询了Paypal官方人员,他们是推荐配合前端sdk一起使用的,但官网只有纯html和Reactjs的案例可以下载。Reactjs有单独的依赖包叫"@paypal/react-paypal-js",其他的结构化项目,用的包是"@paypal/paypal-js",统一放到ES Module的文档中。这本来没什么,可坑爹的是文档有错误,因此我创建了一个 Vue3+vite的项目,配合文档,写了一个Demo,一方面我自己记录一下,一方面希望能给其他朋友一些帮助
文档及示例地址
我的示例地址
如果大家有条件还是去看文档,以免时间长了,我写的这些可能已经过期了。
前端文档地址
服务端文档地址
官方示例下载地址
注意点
其实我觉得不需要运行,只要看看代码就能理解。但如果实在想要运行一下,请先前端的.env文件,后端地址的 application.properties,请替换自己的 PAYPAL_CLIENT_ID 和 PAYPAL_CLIENT_SECRET。然后正常装依赖,启动前端和后端就可以了。本来想写点啥,后来觉得实在太过简单没啥可写的,如果后面想写再补充吧。贴运行后的图糊弄一下哈,页面中用了两种加载Paypal按钮方式,其实只要使用一种就可以。加载到paypal-button-container 这个container是标准模式,可以快速集成,比较简单。加载到paypal-button-container2这种方式,其实灵活度更高,但难度更大,作为Demo就有点复杂了,需要的可以自行查询文档
吐槽一下
我本来以为 Paypal 资料少,是国内资料太少,后来去外面看了看,资料也是一塌糊涂,大量问题没有人回答,例如 PAYPAL_CLIENT_ID 放到前端是否安全,这个问题 Paypal 官方论坛就有人提过,但也是没人回答,后来咨询了官方人员,他说没问题,我也就释然了。
另外我之前都用另一个大论坛,可现在全是广告,真的无语。博客园这边确实是干净,干净到我都觉得有年代感,一些博客主题甚至让我联想到 QQ 空间,很神奇的感觉。