vue 对接 paypal 订阅和支付
一个是支付一个是订阅,写的时候尝试把他们放到一个里面,但是会报错,所以分开写了
我们的页面,前三个为订阅最后一个是支付,我把他们放到一个数组里面循环展示的,所以我们判断的时候只要判断id是否为4,如果是4那么就是支付别的就是订阅
进入页面的时候默认选中第一个,第一个是订阅,直接在onMounted里面去创建script标签,src就是订阅的值
根据你们的需求调整里面的参数和方法
// 这个就是支付或者订阅的按钮
<div id="paypal-button-container"></div>
<div id="paypal-button-subscription"></div>const subscriptionSdk ='https://www.paypal.com/sdk/js?client-id=${申请的SDK}&vault=true&intent=subscription';
const paySkd ='https://www.paypal.com/sdk/js?client-id=${申请的SDK}¤cy=USD';onMounted(() => {// 创建script 标签 定义他们的idconst scriptId = 'subscriptionSdk';let script = document.createElement('script');script.id = scriptId;script.src = subscriptionSdk;script.onload = () => {// 创建订阅按钮subscriptionButton();};document.body.appendChild(script);
});// 点击切换 订阅 或者 支付
const subscriptionChange = (i) => {// 这个地方根据你们需求写......
// 这个是切换函数 进行判断createPayPalButton();
};const createPayPalButton = () => {// 定于不同id进行判断是订阅还是支付const scriptId = subscriptionId.value == 4 ? 'paySdk' : 'subscriptionSdk';// 切换的时候先查询时候存在 如果存在就不用执行下面的let script = document.getElementById(scriptId);if (script) return;script = document.createElement('script');script.id = scriptId;script.src = subscriptionId.value == 4 ? paySkd : subscriptionSdk;script.onload = () => {if (subscriptionId.value == 4) {payButton();} else {subscriptionButton();}};document.body.appendChild(script);
};// 创建支付按钮
const payButton = () => {paypal.Buttons({// 按钮样式style: {layout: 'horizontal',color: 'blue',shape: 'rect',label: 'checkout',tagline: false,height: 40,borderRadius: 10,},createOrder: async (data, actions) => {// 这里调用后端创建订单接口 获取到订单idawait createRechargeChange();// 然后 return 出去return thirdPayId.value;},// 只是paypal支付完后的回调 在这里面进行查询操作即可onApprove: async (data) => {// 调用后端接口查询是否支付成功},onCancel: function (data) {console.log(data, '用户取消支付并返回到网站');},}).render('#paypal-button-container');
};
// 创建订阅
const subscriptionButton = () => {paypal.Buttons({style: {layout: 'horizontal',color: 'blue',shape: 'rect',label: 'checkout',tagline: false,height: 40,borderRadius: 10,},createSubscription: async (data, actions) => {// 创建订单await createRechargeChange();// 这一步 plan_id 要传的是订阅id 这个id问后端要return actions.subscription.create({ plan_id: planId.value });},onApprove: async (data) => {await paySubscription({id: orderId.value,subscriberId: data.subscriptionID,});const loading = ElLoading.service({lock: true,text: t('正在查询订阅结果,请稍后'),background: 'rgba(0, 0, 0, 0.7)',});let requestCount = 0;const maxRequests = 5;intervalId.value = setInterval(async () => {if (requestCount < maxRequests) {requestCount += 1;// 查询订单状态接口await fetchData(loading);} else {loading.close();clearInterval(intervalId.value);ElMessage.error(t('订阅失败,稍后重试'));}}, 1500);},onCancel: function (data) {console.log(data, '用户取消支付并返回到网站');},}).render('#paypal-button-subscription');
};
相关文章:
vue 对接 paypal 订阅和支付
一个是支付一个是订阅,写的时候尝试把他们放到一个里面,但是会报错,所以分开写了 我们的页面,前三个为订阅最后一个是支付,我把他们放到一个数组里面循环展示的,所以我们判断的时候只要判断id是否为4&#…...
Spring Boot - 动态编译 Java 类并实现热加载
为什么需要动态编译? 想象这样一个场景:你的系统需要实时更新业务规则,但重启服务会导致用户体验中断;或者你正在开发一款低代码平台,允许用户编写自定义逻辑并即时生效。这时,动态编译并加载 Java 类的能…...
基于javaweb的SpringBoot实习管理系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
流影---开源网络流量分析平台(一)(小白超详细)
目录 流影介绍 一、技术架构与核心技术 二、核心功能与特性 流影部署 流影介绍 一、技术架构与核心技术 模块化引擎设计 流影采用四层模块化架构:流量探针(数据采集)、网络行为分析引擎(特征提取)、威胁检测引擎&…...
Spring Boot事件机制详解
Spring Boot事件机制详解 1. 事件机制基础 1.1 什么是事件驱动架构 事件驱动架构(Event-Driven Architecture, EDA)是一种软件设计模式,其中系统组件通过事件的发布与订阅进行通信。在Spring Boot中,事件机制为应用程序提供了松耦合的组件间通信方式&…...
【商城实战(63)】配送区域与运费设置全解析
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
2025高频面试算法总结篇【字符串】
文章目录 直接刷题链接直达无重复字符的最长子串给定一个数,删除K位得到最小值至多包含 K 个不同字符的最长子串字符串的排列至少有K个重复字符的最长子串 直接刷题链接直达 如何找出一个字符串中的最大不重复子串 3. 无重复字符的最长子串 给定一个数࿰…...
Python散点密度图(Scatter Density Plot):数据可视化的强大工具
在数据驱动决策的时代,能够高效地处理和可视化多变量数据是一项 crucial 的技能。今天,我们就来深入探讨散点密度图(Scatter Density Plot),这是一种将散点图和核密度估计相结合的数据可视化技术,主要用于展示大量数据点在二维平面上的分布情况。 一、散点密度图的特点 …...
Oracle 数据库安全评估(DBSAT)简明过程
下载DBSAT 从这里下载。 实际是从MOS中下载,即:Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)。 最新版本为3.1.0 (July 2024),名为dbsat.zip,近45MB。 $ ls -lh dbsat.zip -rw-rw-r-- 1 oracle oins…...
【T2I】Divide Bind Your Attention for Improved Generative Semantic Nursing
CODE: GitHub - boschresearch/Divide-and-Bind: Official implementation of "Divide & Bind Your Attention for Improved Generative Semantic Nursing" (BMVC 2023 Oral) ABSTRACT 新兴的大规模文本到图像生成模型,如稳定扩散(SD),已…...
【2025】基于springboot+uniapp的企业培训打卡小程序设计与实现(源码、万字文档、图文修改、调试答疑)
基于 Spring Boot uniapp 的企业培训打卡小程序设计与实现 系统功能结构图如下: 一、课题背景 在当今快节奏的商业环境中,企业培训对于员工的成长和企业的发展至关重要。为了满足企业对高效培训管理和员工便捷学习的需求,基于 Spring Boot …...
腾讯面经,有点难度~
今天分享组织内的朋友在腾讯安全的实习面经。 内容涵盖了QPS测试方法、SQL聚合查询、Linux进程管理、Redis数据结构与持久化、NAT原理、Docker隔离机制、Go语言GMP调度模型、协程控制、系统调用流程、变量逃逸分析及map操作等等知识点。 下面是我整理的面经详解: …...
LeetCode(704):二分查找
二分查找 题目链接 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 #include<stdio.h> //左闭…...
探索AI的无限可能,体验智能对话的未来,大模型 API 演示
探索AI的无限可能,体验智能对话的未来,大模型 API 演示 效果展示: 项目概述 这是一个基于 Vue 3 TypeScript Vite 构建的 Vista AI 演示项目,旨在提供一个简洁易用的界面来展示 Vista AI 大语言模型的能力。项目包含 API 演示…...
26考研——图_图的存储(6)
408答疑 文章目录 二、图的存储图的存储相关概念邻接矩阵存储方式邻接矩阵的定义顶点的度计算邻接矩阵的特点邻接矩阵的局限性 应用场景邻接矩阵的幂次意义(了解即可) 邻接表存储方式邻接表定义邻接表结构邻接表的特点 邻接矩阵和邻接表的适用性差异十字…...
Spark读取文件系统的数据(sbt打包测试)-入门级别Demo
学习目标 通过本关卡练习,您将学到: 如何使用Spark访问本地文件和HDFS文件Spark应用程序的编写、编译和运行方法 相关知识 操作系统:Ubuntu 16.04; Spark版本:2.4.0; Hadoop版本:3.1.3。 编…...
5.1 位运算专题:LeetCode 面试题 01.01. 判定字符是否唯一
1. 题目链接 LeetCode 面试题 01.01. 判定字符是否唯一 2. 题目描述 实现一个算法,确定一个字符串的所有字符是否全部唯一(即没有重复字符)。要求如下: 不使用额外的数据结构(如哈希表)字符串仅包含小写…...
datawhale组队学习--大语言模型—task4:Transformer架构及详细配置
第五章 模型架构 在前述章节中已经对预训练数据的准备流程(第 4 章)进行了介绍。本章主 要讨论大语言模型的模型架构选择,主要围绕 Transformer 模型(第 5.1 节)、详细 配置(第 5.2 节)、主流架…...
Python虚拟环境:从入门到实战指南
目录 一、为什么需要Python虚拟环境? 二、如何创建Python虚拟环境? 1. 使用venv(Python 3.3内置) 2. 使用virtualenv(第三方工具) 3. 使用conda(适合数据科学项目) 三、虚拟环…...
如何提升 Java 开发能力?
如何提升 Java 开发能力? 要系统提升 Java 开发能力,需从 基础巩固、技术拓展、实战经验、持续学习 四个维度入手。以下是详细的进阶路径和具体建议: 一、夯实 Java 核心基础 深入理解语言特性 必学内容: JVM 原理:…...
《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型
《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型 《TCP/IP网络编程》学习笔记 | Chapter 21:异步通知 I/O 模型同步与异步同步异步对比同步 I/O 的缺点异步 I/O 的优点 理解异步通知 I/O 模型实现异步通知 I/O 模型WSAEventSelect 函数和通知…...
Qt6相对Qt5的主要提升(AI总结)
我: Qt 6 相对于5 有哪些新功能? Qt 6 相对于 Qt 5 有诸多新功能和改进,以下是主要的新增特性: 1. 架构和核心库的重构 模块化设计:Qt 6 采用了更加灵活的模块化设计,开发者可以按需引入必要的功能模块&a…...
消息队列ActiveMQ、RabbitMQ、RocketMQ、Kafka对比分析和选型
ActiveMQ、RabbitMQ、RocketMQ、Kafka对比分析和选型 四大消息队列详细对比 1. ActiveMQ 核心特性: 基于JMS规范,支持多种协议(AMQP、STOPP、MQTT等)。提供主从架构(Master-Slave)和共享存储集群。支持持…...
2025:sql注入详细介绍
先说一个阿里云学生无门槛免费领一年2核4g服务器的方法: 阿里云服务器学生无门槛免费领一年2核4g_阿里云学生认证免费服务器-CSDN博客 SQL注入(SQL Injection)是一种常见的网络安全漏洞,攻击者通过在应用程序的输入参数中注入恶意…...
MyBatis操作数据库进阶——动态SQL
动态 SQL 是根据程序运行时的条件灵活生成不同 SQL 语句的技术。它的核心目的是在不修改代码 的前提下,通过条件判断、循环等逻辑,动态拼接 SQL 片段,解决传统 SQL 语句死板、难以应对复杂业务场景的问题。 一、<if> 标签 先来观…...
使用LLama-Factory的简易教程(Llama3微调案例+详细步骤)
引言:一套快速实现 Llama3 中文微调的教程 主要参考:胖虎遛二狗的 B 站教学视频《【大模型微调】使用Llama Factory实现中文llama3微调》 ✅ 笔者简介:Wang Linyong,西工大,2023级,计算机技术 研究方向&am…...
LabVIEW发电平台数据采集系统
本文详细介绍了基于LabVIEW的摇臂式波浪发电平台数据采集系统的设计与实现。通过整合LabVIEW软件与多种传感器技术,本系统能够有效提升数据采集的准确性和效率,为波浪能的利用和发电设备的优化提供科学依据。 项目背景 随着全球能源需求增长和环境保…...
气象可视化卫星云图的方式:方法与架构详解
气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…...
abaqus 二次开发 No module named ‘abaqusConstants
在 Python 中遇到 “No module named ‘abaqusConstants’” 错误通常意味着 Python 无法找到名为 abaqusConstants 的模块。这可能是由以下几个原因造成的: 拼写错误:首先确认模块名是否正确。通常在 Abaqus 的 Python 环境中,正确的模块名…...
【蓝桥杯】每日练习 Day7
目录 前言 领导者 分析 代码 空调 分析 代码 面包店 分析 代码 前言 今天是第一部分的最后一天(主打记忆恢复术和锻炼思维),从明天开始主播会逐步更新从位运算到dp问题的常见题型。 领导者(分类讨论) 分析 …...
