商户接入指南 商户接入指南
  • V2 (opens new window)
  • V3 (opens new window)
  • V4-English (opens new window)
  • V4-专业版 (opens new window)
  • V2 (opens new window)
  • V3 (opens new window)
  • V4-English (opens new window)
  • V4-专业版 (opens new window)
  • 概述

    • 起步
    • 对接流程
    • 联调资源
  • 服务

    • Checkout

      • 概览
      • Hosted
      • Non-Hosted
      • APIs

    • 订阅

      • 概览
      • 接入流程
    • 线下付款码支付

      • 接入流程
    • Tokenization

      • 概览
      • 接入流程
      • APIs

    • 风险管理

      • 概览
      • Dynamic 3D Secure
      • Disputes
      • APIs

    • 一键支付

      • 概览
      • 接入流程
      • APIs

    • ApplePay

    • GooglePay

    • KYB

    • 支付链

    • 建站工具

    • 工具

  • 附录

  • v4

Javascript-SDK-2.0对接文档

# Javascript-SDK-2.0对接文档

# Javascript-SDK-2.0新特性

  1. 基于 Web Component 技术,由浏览器原生支持的,优势明显
  2. 更加轻量,快速响应,Gzip后整个收银台包大小约为 59 kb
  3. 对接方式简单,灵活接入,符合现代化收银台 web app 标准
  4. 现代主流浏览器中高版本均兼容
  5. 支持自定义 SDK 收银台皮肤
  6. 支持发起支付请求前设置钩子函数
  7. 支持自定义支付按钮触发支付事件

# 收银台结果页展示

当用户选择支付方式后并完成支付后,系统将根据图片展示逻辑重定向到其支付结果页面

支付跳转逻辑

# 浏览器最低版本要求



73
79
63
12.1

# 接入流程

# 引入Javascript-SDK

复制以下代码,通过CDN地址引入 PingPongCheckout Javascript-SDK


    <script type="module" src="https://pay-cdn.pingpongx.com/production-fra/static/pp-checkout/sandbox/pp-checkout.js"></script>
    
    1
    <script type="module" src="https://payssr-cdn.pingpongx.com/production-fra/acquirer-checkout-web/pp-checkout.js"></script>
    
    1
    // Make sure to add code blocks to your code group

    # 初始化JS-SDK

    提示

    从沙箱环境切换到生产环境时,请务必检查并且完成下列的操作,否则会导致收银台无法正常渲染。

    • 将引入Javascript-SDK的CDN地址切换到生产环境指定的URL

    Step 1 . 当你在联调沙箱环境时,需要在引入沙箱环境 的PingPongCheckout Javascript-SDK地址(发布到生产环境的时候别忘了切换成生产环境的地址)

    Step 2 . 将 pp-checkout 标签插入 html body 中

    <pp-checkout></pp-checkout>
    
    1

    Step 3 . 将预下单获取到的 accessToken 传入,获取accessToken API文档详见下单接口(Hosted模式)

    <pp-checkout accessToken='{token}'></pp-checkout>
    
    1

    Step 4 . 设置语言,你可以将收银台所要展示的语种(默认为英文,更多语言详见Locale)通过标签属性的方式传递给 pp-checkout,如下:

    <pp-checkout locale='en'></pp-checkout>
    
    1

    通过上面四步,你已经成功渲染了Javascript-SDK收银台。

    # 使用示例

    原生 Javascript

    <head>
    <script type="module" src="https://pay-cdn.pingpongx.com/production-fra/static/pp-checkout/sandbox/pp-checkout.js"></script>
    </head>
    <body>
        <div id="checkout-wrap">
            <pp-checkout accessToken="" locale="zh"></pp-checkout>
        </div>
    
    
        <script>
            new Promsie((resolve, reject) => {
                // Mock 预下单获取 token
                setTimeout(() => {
                    // 下单接口(Hosted模式)获取 token
                    const token = 'EU:7GKJGJxK7hZtmuTAs5I9G-TPWeHkcZt7J4awedWETYteVyVpmhBjEzR2aWc6--Mv';
                    document.querySelector('pp-checkout').setAttribute('accessToken', token);
                    resolve();
                }, 2000)
            })
        </script>
    </body>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    如果你使用了 Vue/React 等框架,直接修改数据源即可:

    <template>
      <div id="checkout-wrap">
        <pp-checkout :accessToken="accessToken" locale="zh"></pp-checkout>
      </div>
    </template>
    <script setup>
    import { ref, onBeforeMount } from 'vue';
    
    const accessToken = ref('');
    
    function getOrderInfo() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                accessToken.value = 'EU:7GKJGJxK7hZtmuTAs5I9G-TPWeHkcZt7J4awedWETYteVyVpmhBjEzR2aWc6--Mv';
                resolve();
            }, 1000);
        });
    }
    
    onBeforeMount(async () => {
        await getOrderInfo();
    });
    </script>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    # SDK 个性化设置

    # 全局变量和hook

    在使用全局变量前,请确保Javascript-SDK 加载完成。

    PingPong.Checkout.customizeStyles

    {
        themeType?: 'light' | 'dark' // 不传默认为 light;
        themeColor: string;
        themeColorLight: string;
    }
    
    1
    2
    3
    4
    5

    v4 SDK 支持自定义皮肤,当你需要将 SDK 收银台主题色改为符合你的网站风格时,这很有用。示例:

    PingPong.Checkout.customizeStyles = {
        themeType: "light" ,
        themeColor: "rgb(54, 175, 3)",
        themeColorLight: "rgba(54, 175, 3, 0.4)",
    }
    
    1
    2
    3
    4
    5

    PingPong.Checkout.beforeCheckoutHook

    (() => void) | (() => Promise<void>)
    
    1

    beforeCheckoutHook 用来设置发起支付请求前的钩子函数。

    当你在用户点击支付按钮,发起支付请求前,需要执行你自己的业务逻辑,如:上报埋点、检查库存等,可以设置该钩子函数。

    该函数可以返回一个Promise,后续的支付流程会等待该 Promise 状态变为 Fulfilled 后才会继续执行。如果你想在 Promise 状态为 Rejected 或者异步结果不满足你的业务条件时,可以抛出异常,SDK在捕获到异常后中断支付流程。

    示例

    PingPong.Checkout.beforeCheckoutHook = () => {
        return fetch('/api/requestInventory').then(res => {
    
            const { inventoryQuantity } = res;
    
            if(inventoryQuantity <  MIN_QUANTITY) {
                throw new Error('库存不足,需中断交易')
            }
        }).catch((error) => {
            throw new Error('接口异常,需中断交易')
        })
    };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 自定义配置

    # PingPong.Checkout.customizeConfig

    类型: Object

    PingPong.Checkout.customizeConfig 是一个自定义配置对象,用于设置与 Checkout 过程相关的参数。

    配置项说明:

    Key(键) 类型(Type) 默认值(Default) 描述(Description)
    originalPay boolean true 控制是否使用默认的 PingPong 支付按钮。若将其设置为 false,则表示不使用内置支付按钮。此时,您需要在您的自定义支付按钮点击事件中调用 PingPong.Checkout.pay.run() 方法来触发支付流程。
    const customizeConfig = {
      originalPay: false, // 不使用默认的 PingPong 支付按钮
    };
    
    // 在自定义按钮点击事件处理函数中触发支付
    customPayButton.addEventListener('click', () => {
      PingPong.Checkout.pay.run();
    });
    
    1
    2
    3
    4
    5
    6
    7
    8

    # Javascript-SDK调试工具

    你可以在沙箱环境中体验 Javascript-SDK 的功能,请前往Javascript-SDK 调试工具。

    上次更新: 2024/03/14, 10:34:54
    杭州乒乓智能技术有限公司 | Copyright © 2015-2024 checkout.pingpongx.com.All Rights Reserved.
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式