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 相关文章推荐
Javascript SHA-1:Secure Hash Algorithm
Dec 20 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
JavaScript实现自己的DOM选择器原理及代码
Mar 04 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
jQuery实现加入购物车飞入动画效果
Mar 14 Javascript
解析如何利用iframe标签以及js制作时钟
Dec 08 Javascript
浅析Jquery操作select
Dec 13 Javascript
Node.JS文件系统解析实例详解
May 15 Javascript
vue事件修饰符和按键修饰符用法总结
Jul 25 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 Javascript
Vue的状态管理vuex使用方法详解
Feb 05 Javascript
精读《Vue3.0 Function API》
May 20 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实现rc4加密算法代码
2012/04/25 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
js获取浏览器的各种属性
2017/04/27 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
文明餐桌行动实施方案
2014/02/19 职场文书
学生期末评语大全
2014/04/30 职场文书
售房协议书
2014/08/19 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
初中班干部工作总结
2015/08/10 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
MySQL一些常用高级SQL语句
2021/07/03 MySQL