wcb-blog-4

Introducing the WalletsNet CLI

 

开发者接入 WalletsNet 经常会问到两个问题:

我们今天介绍的 CLI 工具就是为了解决这两个问题,我们开始吧。

 

第一步,启动 ngrok

本地开发的 server 如何收到来自 WalletsNet 的消息推送呢?其实原理就是建立一个通讯的 tunnel,业界有很多第三方的工具,我们这里选择了最流行的工具 —— ngrok(关于ngrok的介绍,可以看它的官网:https://ngrok.com

首先注册一个 ngrok 的账户,然后就可以下载它的客户端了,在本地启动客户端,非常简单,像这样:

如此一来你就得到了一个公网的域名临时域名(当然,如果你付费了,就可以设置固定的域名,否则每次重启 ngrok 都会随机重新分配) —— http://cd49-222-128-202-xxx.ngrok.io,这个域名收到的所有消息,都会被转发至你本地的 https://localhost:12222 (至于为什么是12222这个端口呢?一会儿会提到)。

然后,将 ngrok 提供的这个域名配置到 WalletsNet Dashboard 的 webhook 上面,以后,WalletsNet 就会把消息发送到这里,于是你的本地就能收到了。

ngrok 还提供了一个本地的 web 界面供查看收到的数据:http://127.0.0.1:4040

第二步,安装 CLI

注意:运行 WalletsNet CLI 需要 python 3.8 以上

执行完这些指令之后,之后就可以直接使用 walletsnet 这个命令了,CLI 工具支持以下几个命令:

第三步,启动本地收发器

这局命令的含义是在本地(localhost)启动一个收发器,端口为默认(默认12222),如果forward_to参数被指定了(如上),那么收发器收到消息后将会把消息(解密后明文)转发至本地 https://localhost:15555,这个15555端口的server就是开发者自己开发的用来处理报文的代码。所以,收报文的实际链路为:

注意:虽然 WalletsNet 发送至 ngrok 的数据为加密数据,但是只要获得了 WalletsNet 的公钥,消息还是能够被解密出来的,所以开发者只可将 ngrok 使用在本地开发调试的场景下,千万不可用作实际生产!

收发器如果正确启动,则可以看到下面的输出:

 

第四步,查看可以运行哪些sample

打开一个新的terminal,输入命令:walletsnet examples 即可看到我们提供了哪些sample

 

第五步,运行 sample

在运行 sample 之前,别忘了有几件事情要完成:

假设我们发送一笔 credit transfer 交易指令给 WalletsNet:

这条指令会转发给模拟器对手方,模拟器收到消息后会无条件的接受你的交易,然后你就可以看到本地收发器收到了消息,是这样的:

本文中,我们在15555端口随便起了一个服务,用来接收数据并display一下流程,此时便看到了这样的输出:

(P.S. 如果你连“随便起个服务”都不想搞,也没关系,我们在这里为你准备好了这个“随便起的服务”:https://github.com/WalletsClub/simple-processor

说明,我们发出去的 pacs.008 已经被正常的处理了,WalletsNet 返回了 Positive 的 pacs.002,我们就可以 立刻 debit 付款人的账户啦!

完结

几点需要说明的地方,开发者不是必须按照这个流程开发,CLI 工具也不是必须的:

  1. 假设开发者能够在一个公网环境的服务器上开发,则完全不需要使用CLI。但是如果希望本地开发和调试,则CLI会帮助你省去很多麻烦
  2. 假设开发者自己通过看 WalletsNet 的文档会自己加解密、收发消息、组装消息,那么也完全不需要用CLI
  3. CLI 工具内置的收发器不可用作生产环境,只能用作集成和调试使用
  4. ngrok 在某些网络环境下不是很稳定,收不到消息也比较常见(可不是因为 WalletsNet 出问题了哦),多发几次就行了