V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jybox
V2EX  ›  分享创造

TokenSubs: 为你的独立项目接入基于 ERC20 的订阅付费

  •  2
     
  •   jybox ·
    jysperm · 2 天前 · 1204 次点击

    省流:tokensubs.io

    早在 10 年前我就开始在我的网站上支持比特币支付了 https://www.v2ex.com/t/131432 当时使用了一个第三方的服务,每次调用会返回一个地址 ,如果用户向这个地址转账,我的网站就会收到一个 Webhook 回调。

    这么多年之后,我们现在有了基于 ERC20 的繁荣生态,各类软件和服务也都纷纷转向订阅制,我就想能不能基于 ERC20 预授权的机制,来实现基于密码货币的订阅付费呢?

    其实已经有很多服务在提供这种订阅的接口了,但我觉得他们和十年前这种体验相比实在过于复杂 —— 需要注册帐号、完成 KYC 、阅读冗长的 API 文档、接入 SDK 并配置 API Key 等等。

    于是我以「接入简单」为目标开发了 TokenSubs ,它简单到了你甚至不需要注册帐号,只需拼出一个包含收款地址的 URL (我们有个 URL Builder),然后将用户重定向到这里即可:

    https://tokensubs.io/checkout?merchant=0x8d4c362BD64E4C0a547430B8d9066491627259C8&pricing=1.99USDC/30days

    然后在你的网站接收回调:

    app.post('/webhook', async (req, res, next) => {
      const {eventId} = req.body
      // arbitrum/0x488f2bd0d55f0ccf86903577c24427944c586fea8ecfdde4d92d7497f23d4642/1
      const res = await fetch(`https://tokensubs.io/api/events/${eventId}`)
    
      console.log(await res.json())
    
      /*
        {
          "chain": "arbitrum",
          "subscriptionId": "arbitrum/0xef580637c4fe1f55bbe72d6049a59569b5f262e3",
          "merchant": "0x8d4c362BD64E4C0a547430B8d9066491627259C8",
          "subscriber": "0x269c07a1D560F7C5bfb781c0118f5049a1e006e6",
          "intervalDays": 30,
          "receiveTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
          "price": 1.99,
          "pricing": "1.99USDC/30days",
          "expiredAt": "2024-08-12T15:02:32.000Z",
          "txId": "0x488f2bd0d55f0ccf86903577c24427944c586fea8ecfdde4d92d7497f23d4642",
          "eventId": "arbitrum/0x488f2bd0d55f0ccf86903577c24427944c586fea8ecfdde4d92d7497f23d4642/1",
          "eventName": "SubscriptionCreated",
          // ...
        }
      */
    })
    

    不需要注册帐号、不需要配置 API Key 、不需要提现(会实时转到你填写的地址上),其核心逻辑通过一个智能合约来完成(可在各个 Block Explorer 上查看其代码),合约保证了按约定好的时间和价格进行扣费,任何人都无法干预。

    作为用户看到的支付页面是这样的(不需要注册帐号,直接使用 MetaMask 之类的钱包进行付款):

    开发者可以指定一种 Token 作为定价和收款货币,而用户则可以在多种主流 Token 中选择自己持有的 Token ,TokenSubs 会自动调用 Uniswap 完成兑换。

    更多细节和额外功能可以来 TokenSubs 的文档 查看,或者直接 点击这里 来试一试(如果不希望真的扣钱的话请不要在钱包里同意交易)。

    23 条回复    2024-10-17 23:14:33 +08:00
    Livid
        1
    Livid  
    MOD
       2 天前   ❤️ 2
    如果你 Demo 网站跑在测试网上,那么就可以让大家试试完整流程了。
    loveshuyuan
        2
    loveshuyuan  
       2 天前
    为啥不支持 TRC20
    344457769
        3
    344457769  
       2 天前   ❤️ 1
    我喜欢你的头像。
    liangdi
        4
    liangdi  
       2 天前
    @loveshuyuan 可能有程序员洁癖?哈哈
    jybox
        5
    jybox  
    OP
       2 天前
    @loveshuyuan 只是我一直在用 EVM 生态,还不太了解 TRON
    loveshuyuan
        6
    loveshuyuan  
       2 天前
    @jybox ERC20 手续费太高了
    thoo61871
        7
    thoo61871  
       2 天前
    @loveshuyuan TRC20 不租用能量,手续费已经很高了,孙哥吃相难看。
    shanghaojia
        8
    shanghaojia  
       2 天前
    能不能支持下 sol
    zmxnv123
        9
    zmxnv123  
       2 天前
    主要问题是面向国内用户的话支付方式太小众了,适合海外玩家
    jybox
        10
    jybox  
    OP
       1 天前
    @loveshuyuan 我支持的这几个 Ethereum Layer 2 网络交易费通常在 0.1 人民币以下,对比大部分支付服务的费率我觉得还是可接受的。其他的网络后面当然是可以考虑支持的,只是如果和 EVM 不完全兼容的话需要花比较多的时间。
    @zmxnv123 确实是这样,所以我也只做了英文版本。
    imnpc
        11
    imnpc  
       1 天前
    TRC20 不是手续费更高? ERC20 的收费比较低了
    guoooo00oohao
        12
    guoooo00oohao  
       1 天前
    很不错的一个工具 支持一下
    lairdnote
        13
    lairdnote  
       1 天前
    独数卡。接点支付就好了啊。tokenpay 这些 。。
    guoooo00oohao
        14
    guoooo00oohao  
       1 天前
    认真看了一下交互,如果用户按照月进行订阅,但是参数只有 d ,有时候一个月 28 天,29 天,30 天,31 天。
    这个参数设计的好反直觉。
    onichandame
        15
    onichandame  
       1 天前
    @guoooo00oohao #14 常规做法是 31 天视为一月
    wantstark
        16
    wantstark  
       1 天前
    不是很安全
    guoooo00oohao
        17
    guoooo00oohao  
       1 天前
    @onichandame 好像也行,只要不让客户感觉吃亏就行。
    drymonfidelia
        18
    drymonfidelia  
       1 天前
    @zmxnv123 海外也不适合,我们公司网站就支持 USDT 支付,一个月下来只有个位数人用,大部分人用信用卡因为有优惠
    8863824
        19
    8863824  
       1 天前
    需要 approve 你们合约的话,不安全
    jybox
        20
    jybox  
    OP
       1 天前
    @8863824 这是一个不可升级的合约,所有者也没有除了收取手续费之外其他的特权,在不存在漏洞的情况下要比信任一个传统的服务商更安全,我也找专门做智能合约审计的朋友审计过合约代码。
    @guoooo00oohao 我是觉得基于一个精确的天数而不是长度会变化的「月」更简单一些 ...
    chesha1
        21
    chesha1  
       1 天前
    支付是一个非常核心的业务,如果一个项目需要广泛地接受付费,频率已经高到需要用第三方服务了,那应该已经商业化得很不错了,那他们为什么要选择一个个人开发的服务?

    这个服务甚至没有一个独立的法人,这种情况下,怎么让用户信任这个支付服务
    jybox
        22
    jybox  
    OP
       1 天前
    @chesha1 其实恰恰是小的项目才需要接第三方的支付服务呀,可能我这个产品的受众里会有一些是无法接入 Stripe 等「靠谱」服务的开发者。
    imlonghao
        23
    imlonghao  
       17 小时 24 分钟前   ❤️ 1
    这个产品感觉也挺适合合租的场景,车主方便收款和统计到期日;乘客可以授权一年的费用,按月划扣给车主,对乘客来说也省事。(于是乎我发起了一个合租贴)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5376 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:38 · PVG 16:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.