使用 BTCPay 接受未定義的付款金額
根據本網站使用者的建議,我實施了一個 BTCPay 伺服器並設置它以接收付款。我很樂意使用 API。
我需要為許多客戶(1000+)設置接收地址,但客戶支付的金額不確定。也就是說,我無法為客戶生成固定金額的發票,因為他們支付了他們希望支付的任何金額。
我需要為每個客戶生成一個接收地址,然後在我的網站上記入他們的賬戶餘額(以美元計),無論他們在收到和結算後發送到 BTC 地址的多少。
有誰知道我如何在 BTCPay Server 中實現這一點?我在下面列出了我的想法,但我正在尋找“正確”的解決方案,而不是像黑客一樣的解決方案。
目前的想法
- 生成小額發票,然後處理客戶在發送 BTC 時多付的款項。多付的款項不得退還。
- 詢問客戶他們希望在網站上支付多少,並為此金額生成發票。我很想避免這種方法,因為案例是讓他們發送他們想要發送的任何內容。
我單獨從 BTCPay 伺服器支持渠道尋求有關此問題的幫助,並在他們的幫助下為這個問題設計了一個“解決方法”。
他們支持的初步回應如下:
BTCPay 伺服器目前不支持對錢包的 API 訪問,並且[目前]不可能以程式方式生成臨時接收地址。
經過討論,我在上面第 1 點建議的方法似乎最合適:
- 在 BTCPay 伺服器中生成一張價值非常低的發票(例如,0.000001BTC)。就我而言,我將發票有效期設置為 24 小時,因為我的客戶不一定會立即付款。
- 將支付地址\二維碼發送給客戶端進行支付。
- 客戶支付他們決定的任何金額。
- 發票被標記為“多付”。也就是說,客戶支付的金額超過了發票金額。
- 在我的軟體中,我將他們支付的實際金額記入他們的帳戶。
- 為客戶生成下一張發票(發票到期後需要每 24 小時完成一次)。
與 BitPay 不同,BTCPay Server不會自動退還多付的款項。這對於解決方案的工作至關重要 - 因為我希望客戶支付不確定的金額,但它肯定會超過非常低的發票金額。
參考
以下參考資料來自我與 BTCPay Server 支持人員在 Mattermost 支持頻道上的對話。
參考 1(接收地址和錢包 API):
所以我們還沒有錢包 API。BTCPay 在很大程度上與 BitPay 的 API 兼容。但是,該 API 無法充分發揮軟體的潛力,因此我們正在努力打造更好的 API。它仍處於起步階段,您可以在此處預覽文件,如果您有一些回饋,您可以加入 GitHub 上的討論。當新的 API 完全準備好時,我們沒有預計到達時間,可能在今年年底。
參考 2(我提出的解決方案)
感謝您的答复。我可以問一下我要描述的這個現在是否可行?
為每個客戶創建一張低金額(例如 0.00001BTC)的發票,然後客戶可以使用地址發送付款。他們發送付款(這將高於發票金額),然後發票被標記為多付。
這假定多付的金額不會自動退還給客戶。
收到後,我可以為該客戶生成一張全新的發票,以便他們收到一個新地址。
Ref 2a(他們的回應)
肯定會奏效
參考 3(發票超額付款)
退款由商家完成,而不是自動完成