Vue3+Ts:实现paypal按钮

这篇具有很好参考价值的文章主要介绍了Vue3+Ts:实现paypal按钮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言:到了让我激动人心的时刻,paypal支付按钮的前端处理(唯一不足之处是,没有后端处理,有时间我研究下)

先放代码如何实现,再深研究一下逻辑。

一、前端页面按钮实现

第一步:下载paypal.js依赖
npm install @paypal/paypal-js
第二步:引入要使用的vue页面,并调用。
<template>
<div id="paypal-buttons"></div>
</template>
<script lang="ts">
import { loadScript } from "@paypal/paypal-js";
import { nextTick, defineComponent, onMounted } from 'vue'

export default defineComponent({
	  setup(){   
	    onMounted( async()=>{
	      await 页面加载数据方法()
	      await nextTick(()=>{
	        constructButton()
	      })
	    })
	  const constructButton =async ()=>{
	      await loadScript({
	      	clientId: "clientId",
	        disableFunding:['credit','card'] // 禁止出现的按钮
	      })
	        .then((paypal) => {
	          if (paypal?.Buttons) {
	            paypal
	              .Buttons({
	                style: { // 按钮样式自定义
	                  height: 40, 
	                },
	                createOrder: (data, actions) => {
	                //调起创建支付订单的接口,checkedValueRef.value选中购买的id
	                  return fetch("url"+checkedValueRef.value
	                  ,{method: 'get', headers:{'Authorization' : userStore.getToken()}})
	                    .then((res) => res.json())
	                    .then((json) => {
	                      if(!json.msg){
	                        if(checkedValueRef.value === null){
	                          message.error('请勾选')
	                        }     
	                      }
	                      return json.msg
	                    }).catch((err)=>{
	                    	console.log(err)
	                    })
	                },
	                onApprove: (data, actions) => {
	                // 获得订单id去付款接口
	                  return fetch("url?orderId=" + data.orderID
	                      ,{method: 'get', headers:{'Authorization' : userStore.getToken()}})
	                    .then((res) => res.json())
	                    .then((json) => {
	                      if(json.code === 0){
	                        checkedValueRef.value = null
	                  		// 购买成功
	                      }else{
	                       // 购买失败
	                      }
	                    })
	                },
	                onCancel(data){
                  		console.log('取消');
                	}
	              })
	              .render("#paypal-buttons")
	              .catch((error) => {
	                console.error("failed to render the PayPal Buttons", error);
	              });
	          }
	        })
	        .catch((error) => {
	          console.error("failed to load the PayPal JS SDK script", error);
	        });
      }	
   }
})
</script>

依赖地址

二、实现逻辑研究

其实上面这些就已经能满足操作了,但是我们还需要了解三点细节

第一点:了解下Buttons自带的style属性
    style?: {
        color?: "gold" | "blue" | "silver" | "white" | "black";  // 按钮颜色
         // 该按钮的默认最大宽度为750px,但您可以将按钮放大。
         //将style.disableMaxWidth设置为true。然后,更改容器级别的最大宽度值。
        disableMaxWidth?: boolean;
        // 默认情况下,按钮会根据其容器元素的大小进行调整。
		// 要自定义按钮高度,请将style.height选项设置为25到55之间的值。
		// 您的按钮容器元素必须足够宽,以容纳水平支付按钮。
        height?: number;
        label?: // 将style.label选项设置为以下值之一:
            | "paypal"
            | "checkout"
            | "buynow"
            | "pay"
            | "installment"
            | "subscribe"
            | "donate";
         // 设置style.layout选项以确定多个按钮可用时的按钮布局(垂直|水平)
        layout?: "vertical" | "horizontal"; 
        shape?: "rect" | "pill"; // 按钮形状:矩形/圆矩形
        tagline?: boolean;
    };

可以参考网址: https://developer.paypal.com/docs/multiparty/checkout/standard/customize/buttons-style-guide/

第二点:了解下Buttons自带的处理方法
createOrder //当买家点击PayPal按钮时,会调用此参数,该按钮会启动PayPal Checkout窗口,买家在PayPal.com网站上登录并批准交易。
createSubscription
onApprove // 从交易中获取资金,并向买家显示消息,让他们知道交易成功。
onCancel // 当买家取消付款时,他们通常会返回到父页面。您可以使用onCancel功能显示取消页面或返回购物车。
onError
onInit/onClick
onShippingChange
onShippingAddressChange
onShippingOptionsChange

这里我只介绍用到的方法
网址参考:https://developer.paypal.com/docs/business/checkout/reference/style-guide/#customize-the-payment-buttons

第三点:loadScript的参数(这里主看PayPalScriptOptions)

(按钮个数展示主要是这里设置)

 options: PayPalScriptOptions,
 PromisePonyfill?: PromiseConstructor

export interface PayPalScriptOptions
    extends PayPalScriptQueryParameters,
        PayPalScriptDataAttributes,
        ScriptAttributes {
    sdkBaseUrl?: string;
}

interface PayPalScriptQueryParameters {
    buyerCountry?: string;
    clientId: string;
    commit?: boolean;
    components?: string[] | string;
    currency?: string;
    debug?: boolean | string;
    // loadScript() supports an array and will convert it
    // to the correct disable-funding and enable-funding string values
    // disableFunding:被禁用的交易资金来源。您通过的任何资金来源都不会在结帐时显示为按钮。默认情况下,资金来源资格是根据各种因素确定的。不要使用此查询参数禁用信用卡和借记卡的高级支付。
    disableFunding?: string[] | string; 
    enableFunding?: string[] | string;
    integrationDate?: string;
    intent?: string;
    locale?: string;
    // loadScript() supports an array for merchantId, even though
    // merchant-id technically may not contain multiple values.
    // For an array with a length of > 1 it automatically sets
    // merchantId to "*" and moves the actual values to dataMerchantId
    merchantId?: string[] | string;
    vault?: boolean | string;
}

参考网址:https://developer.paypal.com/sdk/js/configuration/#link-queryparameters文章来源地址https://www.toymoban.com/news/detail-817591.html

到了这里,关于Vue3+Ts:实现paypal按钮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务端使用ASP.NET Core SignalR与Vue3(TypeScript与JavaScript)前端建立通信(以进度条为例)

    1. ASP.NET Core           ASP.NET Core 是一个跨平台、高性能及开源的框架,用于生成基于云且连接互联网的新式应用程式。 官方文档:ASP.NET documentation | Microsoft Learn  2.  ASP.NET Core SignalR         ASP.NET Core SignalR 是开源库,用于服务端与客户端建立实时通信,可以自动管理连接

    2024年02月06日
    浏览(36)
  • Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

    本文主要介绍如何使用Vue3和TypeScript引入BabylonJs技术实现3D效果。结合实际案例,详细讲解了如何在Vue3项目中引入BabylonJs,并了解其相关知识。通过本文的学习,相信读者可以轻松掌握Vue3实现3D效果以及BabylonJs的相关知识。 1、创建Vue3 + TypeScript项目 将生成的js文件都修改为

    2024年02月04日
    浏览(30)
  • 《Vue3+Typescript》一个简单的日历组件实现

    这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 目录 一、前言 二、效果图 三、核心思路 四、代码实现 4.1 本月日期

    2024年02月14日
    浏览(29)
  • 前端开发小技巧 - 【Vue3 + TS】 - 在 TS + Vue3 中使用 Pinia,实现 Pinia 的持久化,优化Pinia(仓库统一管理)

    ts 中使用 pinia 和 Vue3 基本一致,唯一的不同点在于,需要根据接口文档给 state 标注类型,也要给 actions 标注类型; 以下都是 组合式API 的写法, 选项式API 的写法大家可以去官网看看; Pinia; 持久化插件 - pinia-plugin-persistedstate; 目标文件: src/types/user.d.ts (这里以 user.d.t

    2024年04月09日
    浏览(38)
  • Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】

    这是一个使用Vue3,TypeScript,Vite和Three.js的项目。Vue3是一个流行的JavaScript框架,用于构建用户界面。TypeScript是一种静态类型的编程语言,它是JavaScript的超集,可以编译成纯JavaScript。Vite是一个由Evan You开发的新的前端构建工具,能够提供快速的冷启动和即时热更新。 Three.j

    2024年02月03日
    浏览(39)
  • vue3自定义按钮点击变颜色实现(多选功能)

    实现效果图: 默认选中第一个按钮,未选中按钮为粉色,点击时颜色变为红色 利用动态类名,当定义isChange数值和下标index相同时,赋予act类名,实现变色效果

    2024年01月19日
    浏览(34)
  • 使用ExcelJS实现excel的前端导出功能(Vue3+TS)

    ExcelJS :读取,操作并写入电子表格数据和样式到 XLSX 和 JSON 文件。一个 Excel 电子表格文件逆向工程项目。 github中文文档:https://github.com/exceljs/exceljs/blob/master/README_zh.md  封装excel.ts工具文件 表格页面调用excel工具文件 

    2024年02月14日
    浏览(41)
  • vue3项目引入本地js文件,实现一个音频播放按钮

    目前有一个需求就是在网页上放置一个音乐控制按钮,并且是在vue3项目里面。于是小白的我遇到了2个问题,第一个问题是如何实现没有进度条的播放按钮,这个网上有现成的代码,可以通过js代码切换不同的图片或者是别的样式,并不算难;第二个问题是如何在vue3项目中引

    2024年02月19日
    浏览(32)
  • elementUI之下拉选项加多选框功能实现vue3+ts

    根据 @牛先森家的牛奶 的代码修改后实现 具体参考原博主文章,这里只对部分细节调整,记录一下

    2024年02月17日
    浏览(40)
  • vue3中如何实现通过点击不同的按钮切换不同的页面

    完成以上需求,我们可以使用vue中的component标签来实现。 component是Vue.js中一个特殊的标签,用于动态地绑定其它组件。它可以与v-bind:is指令一起使用,来决定要渲染哪个组件。下面是示例代码

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包