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 相关文章推荐
js自带函数备忘 数组
Dec 29 Javascript
几个高效,简洁的字符处理函数
Apr 12 Javascript
一个js写的日历(代码部分网摘)
Sep 20 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
iframe跨域通信封装详解
Aug 11 Javascript
jquery实现的横向二级导航效果代码
Aug 26 Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
如何解决vue与传统jquery插件冲突
Mar 20 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中set()函数简介及实例解析
2018/01/09 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
详解python中sort排序使用
2019/03/23 Python
python yield关键词案例测试
2019/10/15 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
公司端午节活动方案
2014/02/04 职场文书
难忘的一天教学反思
2014/04/30 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python