Jump to content
FIBOS社区
Sign in to follow this  
FIBOS

FIBOS 支付接入笔记

Recommended Posts

好久没倒腾区块链的东西了,前几天有空,于是把在写的知识付费的社区程序和目前发展得不错(貌似)的 FIBOS 做了下对接。在开发过程中得到了 FIBOS 团队的不少帮助,这里把亲测好用的支付对接流程分享给大家。

FIBOS 简介

先简单说几句区块链,只挑和我们要讲的一条线说,熟悉的同学可以跳过。

区块链可以看成是在去中心化网络上,每个节点都完整存储的、通过 hash 值层层校验的账本。

 

1  

 

去中心化网络并不是我们熟悉的分布式网络,它里边的节点是对等的。公链式的区块链,任何人只要装上对应的软件,都可以成为节点。

 

1  

 

早期网络节点间,主要传输交易记录。这形成了现在最大的数字货币,比特币。

 

1  

 

后来大家发现在交易时可以附带可执行的程序,用来描述和优化交易细节。这种程序被称为智能合约。这成就了以太坊(ETH)。

 

1  

 

早期的智能合约主要处理和交易相关的业务,当它进一步发展后,大家发现还需要内存和数据库。于是又有人开发了新的网络EOS。

 

1  

 

目前主流区块链平台的进化大阶段暂时到这里。EOS 在设计上有不少不错的考量,但是有个非常蛋疼的特性,它的合约需要用 C 编写,而且它的文档写得也是相当的难以言表。所以虽然 EOS 很火,但能把它的 demo 完整跑通的程序员并不多。

FIBOS 在 EOS 基础上提供了完整的 JavaScript 工具链和生态,可以看做 EOS 的一个改进版本。当然它运行着自己独立的公链,而且现在已经具备了交易跨链等 EOS 不具备的特性。正是这些特性,让我觉得对接 FIBOS 似乎是个不错的选择。

FIBOS 的支付功能和对接流程

 

1  

 

作为已经熟悉了以太坊的开发者,我是不愿意换用其他平台的,毕竟重学一门语言成本很高。

但 FIBOS 采用 JS 写合约,这就没有了学习成本。而 FIBOS 后来实现的去中心化跨链交易,使得如果对接了 FIBOS,就不用再对接 EOS 和 ETH ,因为都可以通过 FO 钱包跨链兑换过来。

还有一点,如果你真的想做生意而不是做玩具,其实还需要稳定币。因为产品成本多半是由法币构成的,如果定价不通过稳定币来锁定,可能出现销售价低于成本的风险。前几个月 FIBOS 上线了跨链稳定币,对接了 USDT 和 DAI 。

然后同时疯狂在各个交易所上架,让购买 FO 变得简单了很多。

 

1  

 

还有支持 FIBOS 链上 USDT 的生态 OTC 服务商 UUEX ,以及即将上线的去中心化 OTC 服务。

在今年春节前考察了整个生态后,我觉得已经比较适合真实的商业产品落地了,所以试水了下 FIBOS 的支付。

我们的接入采取非常轻的方式,把之前设计的合约分账先去掉了,直接只接支付。

这个流程本身其实简单得令人发指,只有三步。

首先我们构造一个URL,在这个URL里边把订单号作为交易备注放进去。然后生成二维码。

 

1  

 

然后,用户通过 FO 钱包扫码,进行转账。收款方、交易额、币种和备注因为我们已经传入,都会默认填好。

 

1  

 

当用户确定交易完成后,我们只需要通过 FIBOS 网络查询收款方是否有包含订单号的新交易就可以了。

 

1  

 

FIBOS 支付对接的实现

当然,具体做起来还是有一些细节的,尤其在 FIBOS 文档还不够完善的现在。这里把我自东土大唐而来历经千辛万苦取回的真经写给大家。

构造支付二维码

钱包用二维码对应的URL格式如下:

https://wallet.fo/Pay?params=phpisthetest,FOUSDT,eosio,0.01,order=111
 

参数顺序依次是:收款方 FIBOS 账号、通证名、发行方、金额、备注。

那么,我们到哪里去查找这些通证的确切名称呢?

这里有个列表,包含了目前在 FIBOS 平台上发布的全部通证 api.fowallet.net/1.1/fibos_t…

但是默认只显示100个,可以添加 skip 参数来翻页。

http://api.fowallet.net/1.1/fibos_tokens?skip=100

如果需要查看某个通证的详细信息,可以构造如下 URL 查看。

http://api.fowallet.net/1.1/fibos_tokens?where=%7B%22token_name%22%3A%[email protected]%22%7D

 

我们稍后查询转账情况也是通过这个API,其查询语法可以参考这个文档

在手机上的情况

上边说的是电脑上的情况。

如果用户是在手机上看,通过二维码的方式就显得很智障了。这里我们可以通过 URL 协议在安装了 FO 钱包APP的手机上直接唤起它。

格式如下:

fowallet://URLENCODE后的、上文中的URL

把这个 URL 写到 A 标签,点击既可以唤起钱包了。

转账结果的查询

FIBOS 的查询 API 用的 GraphQL ,熟悉的同学可以自己编写。这里我直接给出操作步骤。

我们需要构造一个 post 请求, URL 为 http://api.fowallet.net/1.1,header 为 Content-Type: application/graphql,body如下:

{
        find_fibos_tokens_action(
         order:"-id"
         where:{
                         account_to_id: "收款方FO账户",
                         contract_action:{
                             in:["eosio.token/transfer","eosio.token/extransfer"]
                         }
                     }
        ){
                     action{
                         rawData
                         transaction
                        {
                            block
                            {
                                status
                            }
                        }
                     }
         token_from{
          token_name
         }
        }
    }

在返回的结果中,我们需要确认以下内容:

  • action.transaction.block.statusnoreversible ,这表示交易状态不可逆。
  • action.rawData.act.data.memo 为之前我们传入的订单号,用来区分交易。
  • action.rawData.act.data.quantity.quantity 为转账金额。

当我们查询到有效结果后,就表示用户付款已经成功。我们就可以开始发货啦。

补充说明

第一,由于目前 api.fowallet.net 对应的代理服务器不太靠谱,在调试的时候如果出现很久没有返回,那么可以把域名换成这个: elb-tracker-api-1674205173.ap-northeast-1.elb.amazonaws.com

第二,钱包确认到账后,api 也要略等三五分钟才能确认,不要着急。

FIBOS 支付体验

上述方案没有用到合约,也就是说我们不需要消耗额外的内存,也就是说,开发者不用抵押任何 FO 去换取内存等资源。

实际使用中可以发现,比起 ETH ,FIBOS 转账的速度相当迅速。最爽的是,转账是不花钱的、转账是不花钱的、转账是不花钱的。

 

1  

 

比起 ETH 每一笔都烧 Gas ,不花钱意味着可以进行频繁的小额支付。加上 FOUSDT 带来的稳定币值,我们就真真正正的有了一个免手续费的、价值稳定的、跨链的、全球化的支付方案。剩下的就是准备好可以在全球网络售卖的商品,以及教育用户安装 FO 钱包了。

 

1  

 

不信的话,可以现在就安装 FO 钱包,扫描以下二维码,给我转账,亲自体验一把 ?

 

1

作者:Easy
链接:https://juejin.im/post/5e32dfe9f265da3dea348cda
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×