Vue项目接入Paypal实现示例详解


Posted in Javascript onJune 04, 2020

一、支付流程

在paypal的官网上给出了这个按钮内部封装的流程,整个流程只需要用户点击按钮,触发创建订单事件,然后我们再监听用户支付成功的回调,拿到订单id传给后端,让后端再进行一次校验。

二、实现方案

接入方式 优点 缺点 相关资料
在html中插入paypal的script脚本 实现方式比较简单 1、安全性问题:公司的client_id会暴露在代码中 2、引用的按钮样式比较难自定义 官方文档:https://developer.paypal.com/docs/checkout/integrate/# 更详细的说明:https://3water.com/article/188049.htm
使用官方提供的npm包(有好几个) 1、可以自定义,不需要使用官方给定的button,可以在自己的按钮上绑定创建事件 2、不会把client_id暴露出来 1、需要仔细阅读文档,开发难度会大一点 2、有的需要配合node一起开发 github:https://github.com/paypal/paypal-checkout-components node-sdk:https://github.com/paypal/Pay...
使用别人封装好的npm包 1、使用起来方便 2、文档比较清晰 1、可能存在没人维护的风险 2、可自定义的部分不多 3、使用的是Paypalv1版接口,官网上用的是v2接口,但是应该不影响 github:https://github.com/khoanguyen96/vue-paypal-checkout

这是我目前总结的几种实现方案,如果有更好的方案,欢迎在评论区告诉我~

三、项目中实现

由于我是在vue项目实现,经过考虑,别人封装的vue-paypal-checkout库可以满足开发需求,而且使用起来比较简单,所以暂时选择采取这个方案,接下来我们看看代码实现吧!

npm install vue-paypal-checkout
import PayPal from 'vue-paypal-checkout'

export default {
 data() {
  return {
   credentials: {
    sandbox: '填写沙箱环境client_id',
    production: '填写线上环境client_id'
   },
   
   buttonStyle: {
    label: 'pay',
    size: 'small',
    shape: 'rect',
    color: 'blue'
   }
  }
 },
 components: {
  PayPal
 },
 
 methods: {
  paymentAuthorized (data) {
   // 授权完成的回调,可以拿到订单id
   console.log(data);
  },

  paymentCompleted (data) {
   // 用户支付完成的回调,可以拿到订单id
   console.log(data);
  },

  paymentCancelled (data) {
   // 用户取消交易的回调
   console.log(data);
  }
 }
}
<PayPal
 amount="10.00" // 付款的钱数
 currency="USD" // 货币种类,默认为美元
 :client="credentials" // client_id认证信息
 env="sandbox" // 指定环境,默认为线上,也就是production
 :button-style="buttonStyle" // 自定义按钮样式
 @payment-authorized="paymentAuthorized"
 @payment-completed="paymentCompleted"
 @payment-cancelled="paymentCancelled"
>
</PayPal>

以上就是我的代码实现过程,具体内容可以根据业务来修改,实现起来还是蛮简单的,如果只是想嵌入Paypal的按钮,完成基本的支付操作,这个还是完全可以支持的。

四、Paypal沙箱环境账户申请流程

注册Paypal线上账户

(1)浏览器打开https://www.paypal.com/

(2)注册一个账号,个人和企业都行。推荐注册个人账户,比企业账户要填的信息少,功能差别不大

(3)填写相关信息,银行卡号暂时可以先不填,创建完成后就可以看到这个页面,沙箱环境和这个页面长得很像,可以通过网页地址进行区分

注册Paypal开发者账号

(1)浏览器打开https://developer.paypal.com/ ,用刚刚创建的线上账户登录一下(如果时间隔得很近,会默认登录),红色框中是后面会重点用到的内容

(2)进入Accounts页面,创建沙箱测试账户,默认会创建两个账户(1个企业账户,1个个人账户),我们也可以自己创建,最多可以创建5个

登录沙箱环境

(1)用测试账号登录https://www.sandbox.paypal.com ,使用开发者环境的测试账号登录

(2)用红框中的账号和密码登录沙箱环境,就可以看到一个和线上类似的页面,初始资金默认为$5000,可以自行修改

(3)在开发环境下的My Apps & Credentials页面下创建应用,拿到Client ID和Secret去请求Access token

(4)拿Client ID和Secret去请求Access token

页面操作按钮进行测试

(1)登录刚刚沙盒环境的另外一个测试账户

(2)付款成功后,付款页面会自动关闭,可以去沙盒环境看一下扣款记录

五、总结

虽然我这里给了很详细的流程,但看官方文档还是必要的,Paypal的文档挺详细的,只是全英文看起来可能比较有压力,耐心一点会发现还是不错的。说明一点,如果在创建账号的时候有和我不一样的情况,不用惊讶,因为Paypal就是这样神秘的,哈哈哈!

到此这篇关于Vue项目接入Paypal实现示例详解的文章就介绍到这了,更多相关Vue接入Paypal内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
JavaScript window.location对象
Nov 14 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
bootstrap实现图片自动轮播
Dec 21 Javascript
BootStrap3中模态对话框的使用
Jan 06 Javascript
Bootstrap笔记—折叠实例代码
Mar 13 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
vue 项目接口管理的实现
Jan 17 Javascript
基于JavaScript实现简单的轮播图
Mar 03 Javascript
Paypal支付不完全指北
Jun 04 #Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 #Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 #Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 #Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 #Javascript
微信小程序实现watch监听
Jun 04 #Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 #Javascript
You might like
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
详解Bootstrap插件
2016/04/25 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
python原始套接字编程示例分享
2014/02/21 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
简述 Python 的类和对象
2020/08/21 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
经济管理专业毕业生推荐信
2013/11/11 职场文书
档案管理员岗位职责
2013/12/01 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
导游个人求职信范文
2014/03/23 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
复兴之路观后感
2015/06/02 职场文书