npm 包 mxbitcore-payment-protocol 使用教程

前言

随着电子货币的普及, 在线支付也变得越来越常见。而与之配套的软件产品也层出不穷。mxbitcore-payment-protocol 就是一个非常优秀的 npm 包,它可以帮助开发者很容易地构建一个基于比特币的支付协议。

概述

mxbitcore-payment-protocol 是 mxbitcore 团队推出的 npm 包,它是基于比特币网络的支付协议。

mxbitcore-payment-protocol 包含了两个部分:

  1. client - 发起支付请求的前端部分;
  2. server - 接收支付请求并 dispatch 待处理请求的服务端部分;

mxbitcore-payment-protocol 的使用非常简单,一个完整的支付请求流程被分为两步:

  1. 使用 mxbitcore-payment-protocol 的客户端部分构建支付请求数据并加签;
  2. 将构建好的支付请求发送至 mxbitcore-payment-protocol 的服务端部分让其去处理。

下面我们来详细介绍它的使用方法。

环境需求

在开始使用 mxbitcore-payment-protocol 之前,需要满足以下的环境需求:

  1. Nodejs v6+(建议使用 v8+ );
  2. npm 或 yarn 包管理工具。

安装

使用 npm

在命令行中输入以下命令来安装:

--- ------- --------------------------

使用 yarn

在命令行中输入以下命令来安装:

---- --- --------------------------

使用

客户端

在客户端使用 mxbitcore-payment-protocol 主要分为以下两步:

  1. 使用 PaymentRequest 类构建支付请求;
  2. 使用 Payment 类来发起支付请求。

PaymentRequest 构建支付请求

----- - -------------- - - --------------------------------------

------ -- -- -
  ----- -------------- - --- ----------------
    ------- -----
    --------- ------
    -------- -------------------------------------
    ----- -----------
    ----------- --------------------------------------------------------------------
  ---
  --- -
    ----- ----------------- - ----- ------------------------
    -------------------------------
  - ----- --- -
    ---------------
  -
-----

PaymentRequest 构造参数说明:

  • amount: 支付金额,以最小单位为单位;
  • currency: 货币代码;
  • address: 收款人地址;
  • memo: 支付说明(可选);
  • notificationUrl: 支付回调地址(可选);
  • paymentUrl: 用于转移至付款页面的 URL (可选,仅适用于前端);
  • refundAddress: 退款地址(可选);
  • reqParam: 额外的请求参数(可选);

PaymentRequest 的类函数说明:

  • encode: 对支付请求进行编码,返回编码后的支付请求 URL。

使用 Payment 类发起支付请求

----- - ------- - - --------------------------------------

----- ------- - --- ---------
  -------- ----------
---
----- ---------- - ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------ -- -- -
  --- -
    ----- ------ - ----- --------------------------------
    --------------------
  - ----- --- -
    ---------------
  -
-----

Payment 的构造参数说明:

  • network: 货币网络类型,如 mainnet testnet 等(可选);

Payment 类函数说明:

  • sendPayment(): 用于发起支付请求,输入参数为构造 PaymentRequest 类返回的支付请求 URI,并返回支付结果。

服务端

mxbitcore-payment-protocol 的服务端程序是用 NodeJS 编写的。在开发前,需要先配置运行环境。

mxbitcore-payment-protocol 的服务端部分包含了以下几个重要的类:

  • Invoice - 发票类,用于生成支付请求的收据。
  • Server - 服务端类,用于接收支付请求并转交至待处理的 PayPro 处理器上。
  • PayPro - PayPro 协议类,处理支付请求的主要功能。

使用 Invoice 生成收据

----- - ------- - - --------------------------------------

------ -- -- -
  ----- ------- - --- ---------
    -------- -------------------------------------
    ------- ------
    ----- ------------
    ----------- -------------------------------------------------------------------
  ---
  --- -
    ----- ----------- - ----- ------------------
    -------------------------
  - ----- --- -
    ---------------
  -
-----

Invoice 构造参数说明:

  • address: 收款地址;
  • amount: 支付金额,以最小单位为单位;
  • memo: 支付说明(可选);
  • privateKey: 商家私钥。

Invoice 类函数说明:

  • getData(): 使用 Invoice 类构造函数传递的参数生成收据数据。

使用 Server 接收来自客户端的支付请求

----- - ------ - - --------------------------------------

----- ------ - --- --------
  -------- ----------
---
-------------------- ----- --------- -- -
  -- --------
  -- ------ --------------------------- -
    -- ----------- -----------
    ----- ------ - ----- ------------------------------------------
    -- ----
  - ---- -
    -- ------
    ----- --- - ----- ---------------------
    -- ----
  -
---
------------------- -- -- -
  ------------------- --------
---

Server 构造参数说明:

  • network: 货币网络类型,如 mainnet testnet 等(可选);
  • options: 与服务端相关的参数(可选);

Server 事件和函数说明:

  • request: 触发当一个新的支付请求被建立时,这个请求会以 PayPro 接口实现的形式传递给 listener。
  • listen(): 为 Server 类实例添加一个事件监听器。

使用 PayPro 处理支付相关信息

----- - ------ - - --------------------------------------

----- ------ - --- --------
  ----------- ---------------------------------------------
---
--- -
  ----- ------ - ----- --------------------
    -------- ----------
    --------- ------
    --------- ------
    ----- ---------
    ------------- ---- -- ---- - ---------
    ------------------ ---------------------------------------------------------------------
    ------------- -
      -------------------
    --
  ---
  --------------------
- ----- --- -
  ---------------
-

PayPro 构造参数说明:

  • requestUrl: PayPro 服务端地址;

PayPro 类函数说明:

  • sendPayment(): 通过 MXBit SDK 向 PayPro 发送付款流程并返回结果。

示例代码

上述示例代码的集合版如下:

----- - -------------- - - --------------------------------------
----- - ------- - - --------------------------------------
----- - ------ - - --------------------------------------
----- - ------ - - --------------------------------------
----- - ------- - - --------------------------------------

------ -- -- -
  -- -------------- ------
  ----- -------------- - --- ----------------
    ------- -----
    --------- ------
    -------- -------------------------------------
    ----- -----------
    ----------- --------------------------------------------------------------------
  ---
  --- -
    ----- ----------------- - ----- ------------------------
    -------------------------------
  - ----- --- -
    ---------------
  -

  -- -- ------- -------
  ----- ------- - --- ---------
    -------- ----------
  ---
  ----- ---------- - ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  --- -
    ----- ------ - ----- --------------------------------
    --------------------
  - ----- --- -
    ---------------
  -

  -- -- ------- ----
  ----- ------- - --- ---------
    -------- -------------------------------------
    ------- ------
    ----- ------------
    ----------- -------------------------------------------------------------------
  ---
  --- -
    ----- ----------- - ----- ------------------
    -------------------------
  - ----- --- -
    ---------------
  -

  -- -- ------ ------------
  ----- ------ - --- --------
    -------- ----------
  ---
  -------------------- ----- --------- -- -
    -- ------ --------------------------- -
      ----- ------ - ----- ------------------------------------------
      --------------------
    - ---- -
      ----- --- - ----- ---------------------
      -----------------
    -
  ---
  ------------------- -- -- -
    ------------------- --------
  ---

  -- -- ------ --------
  ----- ------ - --- --------
    ----------- ---------------------------------------------
  ---
  --- -
    ----- ------ - ----- --------------------
      -------- ----------
      --------- ------
      --------- ------
      ----- ---------
      ------------- ---- -- ---- - ---------
      ------------------ ---------------------------------------------------------------------
      ------------- -
        -------------------
      --
    ---
    --------------------
  - ----- --- -
    ---------------
  -

-----

结语

mxbitcore-payment-protocol 是一个非常好的 npm 包,它可以帮助前端和后端轻松构建使用比特币网络的支付协议。通过本篇文章的介绍和示例,我们相信读者已经能够掌握 mxbitcore-payment-protocol 的使用技巧,欢迎读者自行前往 npm 官网进行深入学习和实践。谢谢!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600672503660cf7123b362b5


猜你喜欢

  • npm 包 ipa-inheritance 使用教程

    简介 ipa-inheritance 是一个基于 JavaScript 的 npm 包,用于实现 JavaScript 中的类继承。它可以帮助开发者更加轻松地创建复杂的类层次结构,提高代码的重用性和可...

    4 年前
  • npm 包 bitmark-sdk 使用教程

    bitmark-sdk 是 Bitmark 公司开发的一个 JavaScript SDK,用于与 Bitmark 区块链进行交互。它通过提供一组 API,使得开发者可以方便地在应用程序中使用 Bitm...

    4 年前
  • npm 包 concurrency-controller 使用教程

    概述 concurrency-controller 是一款可以用于限制并发请求数量的 npm 包。在前端开发中,经常会遇到需要限制并发请求数量的场景,使用 concurrency-controller...

    4 年前
  • npm 包 @wrote/clone 使用教程

    简介 在前端开发中,我们经常需要对对象或数组进行克隆操作。但是,对于一些嵌套较深、结构较为复杂的对象或数组,手动编写克隆函数通常会比较费时费力。因此,我们可以选择使用现成的 npm 包来完成这个操作。

    4 年前
  • npm 包 @cartoonmango/node-error-handler 使用教程

    @cartoonmango/node-error-handler 是一个 Node.js 中的错误处理模块,可以帮助我们更好地处理和展示错误信息。本文将详细介绍该模块的使用方法和原理,并提供示例代码供...

    4 年前
  • npm 包 optionist 使用教程

    前言 在前端工作中,我们经常需要从前端界面获取用户输入的数据,然后进行处理和展示。如何有效地管理这些输入数据的选项,是一个非常重要的问题。 针对这个问题,我们介绍一个 npm 包 optionist,...

    4 年前
  • npm 包 front-server 使用教程

    在前端开发领域中,我们经常需要使用到一些后端技术来开发前端应用。然而,不是所有的前端开发者都具备专业的后端技能。为了方便前端开发者使用后端工具,出现了一些针对前端的后端轻量级工具,例如 npm 包 f...

    4 年前
  • npm 包 optionry 使用教程

    前言 在开发前端项目的过程中,我们经常需要处理来自用户或者配置文件的选项。而选项处理是一个相对繁琐且固定的过程,为了能够更加高效地完成这些任务,我们需要使用一些开源工具来帮助我们完成工作。

    4 年前
  • npm包 @cartoonmango/winston-logger 使用教程

    简介 在前端开发中,日志系统是非常重要的一环。好的日志系统可以帮助开发人员快速定位问题,提高开发效率。@cartoonmango/winston-logger就是一个优秀的前端日志系统,它是基于Nod...

    4 年前
  • npm包@notainc/tatami使用教程

    前言 在前端开发的工作中,我们经常使用各种开源的npm包,使得我们的开发工作更加高效,也更加方便。在这篇文章中,我将向大家介绍一个非常有用的npm包 @notainc/tatami。

    4 年前
  • npm包seinjs-post-processing-system使用教程

    在前端开发中,处理灯光、阴影等后期处理是非常重要的一部分。seinjs-post-processing-system是一种npm包,可以帮助开发者更加高效地实现此类功能。

    4 年前
  • npm 包 ac-god-table 使用教程

    在前端开发过程中,表格是经常需要使用的组件之一。而在实际的开发中,我们往往需要对表格进行样式定制、数据处理等操作。为了方便开发者处理表格,npm 社区中出现了许多相关的工具包。

    4 年前
  • npm 包 @cartoonmango/api-error 使用教程

    简介 在前端开发中,我们经常会遇到需要进行网络请求的场景。而在网络请求过程中,不可避免地会出现错误。为了更好地管理和处理这些错误,开发人员会选择使用 API 错误管理库。

    4 年前
  • npm 包 easy-oauth2-client 使用教程

    前言 在现代 web 应用程序中,OAuth2 是一种非常常见的身份验证和授权协议。OAuth2 提供了“OAuth2 客户端认证授权协议”和“授权码”的授权模式。

    4 年前
  • npm 包 @wrote/exists 使用教程

    在前端开发中,常常需要检查文件或文件夹是否存在。Node.js 提供了 fs 模块用于文件系统操作,其中 fs.existsSync 方法可以用于检查文件或文件夹是否存在。

    4 年前
  • npm 包 @wrote/rm 使用教程

    在前端开发中,我们经常需要删除文件或文件夹。虽然在操作系统中可以通过 GUI 的方式完成,但是在自动化构建和部署等场景中,我们需要通过命令行方式来实现文件的删除操作。

    4 年前
  • npm 包 zp96-ui 使用教程

    zp96-ui 是一个基于 Vue.js 的 UI 组件库,包含各种常用的组件,例如按钮、表单、弹窗、轮播图等等。使用 zp96-ui 可以快速搭建漂亮且功能强大的用户界面,提高前端开发效率。

    4 年前
  • npm 包 frp-cli-custom 使用教程

    简介 npm 是一个用于管理 JavaScript 包的工具,可以帮助 JavaScript 开发者更加方便地管理和分享代码。其中,frp-cli-custom 是一个可定制的 frp 命令行工具,可...

    4 年前
  • npm 包 @puckwang/vue-slot-machine 使用教程

    简介 @puckwang/vue-slot-machine 是一个基于 Vue.js 的插槽机器 npm 包,用于创建简单而强大的插槽机器效果,适用于多种应用场景。

    4 年前
  • npm 包 logacious 使用教程

    在前端开发中,日志记录是非常重要的。它不仅可以帮助我们追踪程序运行中的错误,还可以为日后的代码优化提供宝贵的参考信息。如果你正在寻找一种简单易用的日志记录工具,那么你不妨试试 npm 包 logaci...

    4 年前

相关推荐

    暂无文章