開源,免費的EOS, ETH,XLM收款插件

  • 無需搭建比特幣/以太坊/EOS全節點(每個都須要幾百G空間)
  • 無手續費,你的程序你作主
  • 全部收到的錢實時自動轉移到開發者我的帳戶,即便被拖庫也沒錢可盜。

開發者訪問本地 http 接口,向用戶展現付款方法,用戶付款後程序會訪問本地回調URLgit

GitHub 地址github

步驟:golang

1. 建立一個Mixin Messenger帳戶.

訪問 mixin.one/messenger 下載對應手機端App。web

中國大陸用戶能夠訪問 a.app.qq.com/o/simple.js… 下載sql

2. 激活開發者帳號

登錄 developer.mixin.one ,用App掃碼登陸shell

這個 教程對於新開發者頗有用。數據庫

Clone, build, run

git clone https://github.com/myrual/mixin-network-snapshot-golang
cd mixin-network-snapshot-golang
複製代碼
  1. 編輯一部分配置信息
const (
	userid      = "3c5fd587-5ac3-4fb6-b294-423ba3473f7d"
	sessionid   = "42848ded-0ffd-45eb-9b46-094d5542ee01"
	private_key = `-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDACTrT4uaB9el9qe0MUOsFrm8kpaDI9PowauMB1Ha25mpfL+5h MFqISLS5z2P89nAsXBg+KyQ2gAVA6rBwW/ZqOc1PKiJhhLBS80nzo3ayfv7OlzNG IxMyqD5izCCtPixnqpuTePoPWq4CNZlxop0VYklsWEfU0U0qqMBgmtqYfQIDAQAB AoGAR8crZed5oTn5fC73m5LjRcxdXqVJ49MtcMuC7jwr41FckRepUkpwjGAgrRMH nJXAd9Q0e4hEkNppHEqciGLXR1dQfZnaM1Gnv7mD3oSgHaH+4qAMnNOCpvwW4Eu3 yp9b1UGj9SvM3D2BrpA+MGf0E/yEJzpRcT956W6SPYYSegECQQDm4uTK+teoxr1Z agJZuCta+IhMzpxIWMob+JN/Huf7OnRcIa9JpXngg4tHOUWmZCDQdqeJMpaQc8SQ 44hba015AkEA1OyJswNIhdmvVp5P1zgREVVRK6JloYwmAtj+Qo4pWJ117LqH4w+b 491r4AeLEGh8VrZ4k6Hp+Cm783S2jTAWJQJARbWdlHdV45xVkQiDuyjy1h2RsXb0 EpfUNcvAZLIlImIMvcBh1x+CA7pTs+Zj1BAJJEee37qJYQXDBGfeRJPKKQJAVG+c x42Ew/eoTZwoIzvLoOkJcFlNHjwaksSER9ZiVQ7URdVOr99vvXQAJG45Wn9k12oy 9LCfvNan/wqIngK0tQJBAL1Wc02seEbMeWyt5jycJEhn6G8F18s9S1v0GXb4U/7/ 6Y87P3TmDLcEuCXkrbZQaCX7jVLu0BkDw8To58TWjh0= -----END RSA PRIVATE KEY-----`
	ADMIN_MessengerID = ""//this is your mixin messenger id, you can find your id in contact page.
)
複製代碼
  1. 編譯
go build mixin_snap.go
複製代碼
  1. 運行
./mixin_snap
複製代碼
  1. 數據庫 同一目錄下會生成一個test.db 的sqlite3文件。

如何使用

獲取數字資產當前價格信息,所以能夠計算客戶應該付多少數字資產

curl -X GET 'http://localhost:8080/assetsprice'
複製代碼

價格結果以下,其中Full Name是該幣種全名,Symbol是在交易所和錢包的縮寫符號,USDPrice是當前資產美圓價格,BTCPrice同理。json

[
	{"Fullname":"Stellar","Symbol":"XLM","USDPrice":0.10357796,"BTCPrice":0.00000889,"Assetid":"56e63c06-b506-4ec5-885a-4a5ac17b83c1"},
	{"Fullname":"EOS","Symbol":"EOS","USDPrice":5.96024263,"BTCPrice":0.00051165,"Assetid":"6cfe566e-4aad-470b-8c9a-2fd35b49c68d"},
	{"Fullname":"Ether","Symbol":"ETH","USDPrice":294.61322131,"BTCPrice":0.02529107,"Assetid":"43d61dcd-e413-450d-80b8-101d5e903357"}
]
複製代碼

若是訂單價值1美金,那麼根據資產價格能夠知道客戶須要 10 XLM, 或者 0.17 EOS。bash

建立支付請求

用POST方法訪問 localhost:8080/charges,參數以下session

POST /charges

Attributes type description
currency String Currency code associated with the amount. Only EOS/XLM/ETH is supported currently
amount Float64 Positive float
customerid String This field is optional and can be used to attach an identifier of your choice to the charge. Must not exceed 64 characters
webhookurl String program will visit localhost+webhook when user pay enough currency before charge is expired
expiredafter uint the webhook will be expired after xx minutes. User can pay to an expired charge , program keep income record and will transfer asset to admin account

舉例: 須要讓客戶 "client1245" 支付 0.001 ETH, 60分鐘內支付完成以後訪問用 POST 訪問 localhost:9090/123。

curl -d '{"currency":"ETH", "amount":0.001, "customerid":"client1245", "webhookurl":":9090/123", "expiredafter":60}' -H "Content-Type: application/json" 127.0.0.1:8080/charges
複製代碼

這條指令返回結果

{
	"Id":3,
	"Currency":"ETH",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":60,
	"Paymentmethod":{
		"Name":"ETH",
		"PaymentAddress":"0x130D3e6655f073e33235e567E7A1e1E1f59ddD79",
		"PaymentAccount":"",
		"PaymentMemo":"",
		"Priceinusd":"310.40105841",
		"Priceinbtc":"0.02374051"
		},
	"Receivedamount":0,
	"Paidstatus":0}
複製代碼

客戶須要向以太坊地址 0x130D3e6655f073e33235e567E7A1e1E1f59ddD79 支付0.001 ETH來完成支付。

若是想收EOS

 $ curl -d '{"currency":"EOS", "amount":0.001, "customerid":"client1245", "webhookurl":":9090/123", "expiredafter":5}' -H "Content-Type: application/json" 127.0.0.1:8080/charges
複製代碼
{
	"Id":2,
	"Currency":"EOS",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":5,
	"Paymentmethod":{
		"Name":"EOS",
		"PaymentAddress":"",
		"PaymentAccount":"eoswithmixin",
		"PaymentMemo":"a01a148f234ea8be0229a4422d21e7f3",
		"Priceinusd":"4.63264861",
		"Priceinbtc":"0.00040277"
	},
	"Receivedamount":0,
	"Paidstatus":0
}
複製代碼

客戶須要向EOS帳戶 eoswithmixin 支付 0.001 EOS, 而且必須填寫支付備註 a01a148f234ea8be0229a4422d21e7f3。

若是想收XLM

curl -d '{"currency":"XLM", "amount":0.001, "customerid":"client1245", "webhookurl":":9090/123", "expiredafter":5}' -H "Content-Type: application/json" 127.0.0.1:8080/charges
複製代碼
{
	"Id":3,
	"Currency":"XLM",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":5,
	"Paymentmethod":{
		"Name":"XLM",
		"PaymentAddress":"",
		"PaymentAccount":"GD77JOIFC622O5HXU446VIKGR5A5HMSTAUKO2FSN5CIVWPHXDBGIAG7Y",
		"PaymentMemo":"45da67ad857c907a",
		"Priceinusd":"0.08866487",
		"Priceinbtc":"0.00000769"
	},
	"Receivedamount":0,
	"Paidstatus":0
}
複製代碼

客戶須要向Stellar帳戶 GD77JOIFC622O5HXU446VIKGR5A5HMSTAUKO2FSN5CIVWPHXDBGIAG7Y 支付 0.001 XLM, 而且必須填寫支付備註 45da67ad857c907a

Payment_method裏面有兩種類型的支付:

  1. 比特幣/以太坊: PaymentAddress 不是空,PaymentAccount 和 PaymentMemo是空。這種狀況下,你只須要給用戶展現資產名字 以太坊和PaymentAddress,客戶只須要向以太坊地址付款。在這個例子裏面,向用戶展現資產名稱 ETH,以及收款地址 0x365DA43BC7B22CD4334c3f35eD189C8357D4bEd6,以及你指望的以太坊數量。
  2. EOS/行星 : PaymentAddress 是空, PaymentAccount 和 PaymentMemo 都有內容。這種狀況下,你須要給用戶展現資產名字,收款帳戶和收款備註,而且嚴肅的提醒用戶同時填寫收款帳戶和收款備註,客戶若是忘記填寫備註,會致使不能到帳,並且沒法退款。

Payment_method的記錄內容裏面有該資產當前的美圓價格和比特幣價格,開發者能夠根據訂單的美圓價格來計算客戶應該支付多少數字貨幣。

{"Priceinusd":"0.10472789","Priceinbtc":"0.00000925"}
複製代碼

支持的貨幣列表

Currency 說明 介紹
EOS EOS.io 主網token -
XLM Stellar 主網token -
BTC 比特幣 -
UDT Tether USD 基於比特幣的USDT,不是ERC20的代幣
XRP 銳波幣 -
LTC 萊特幣 -

檢查收款狀態

訪問 localhost:8080/charges, 帶有參數charge_id

例子

curl -X GET 'http://localhost:8080/charges?charge_id=3'

複製代碼

若是客戶尚未支付,結果以下

{
	"Id":3,
	"Currency":"ETH",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":60,
	"Paymentmethod":{
		"Name":"ETH",
		"PaymentAddress":"0x130D3e6655f073e33235e567E7A1e1E1f59ddD79",
		"PaymentAccount":"",
		"PaymentMemo":"",
		"Priceinusd":"310.40105841",
		"Priceinbtc":"0.02374051"
		},
	"Receivedamount":0,
	"Paidstatus":0}
}
複製代碼

若是客戶已經支付了,那麼結果以下

{
	"Id":3,
	"Currency":"ETH",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":60,
	"Paymentmethod":{
		"Name":"ETH",
		"PaymentAddress":"0x130D3e6655f073e33235e567E7A1e1E1f59ddD79",
		"PaymentAccount":"",
		"PaymentMemo":"",
		"Priceinusd":"309.75108846",
		"Priceinbtc":"0.02369282"
	},
	"Receivedamount":0.002,
	"Paidstatus":2
}
複製代碼

支付狀態 Paidstatus的解釋

解釋
0 尚未支付
1 支付不足
2 支付完畢
3 支付超過需求

payment_records 有支付信息. 其中一個支付信息以下

回調URL

用戶支付完畢後,程序會訪問本地+webook url

"http://127.0.0.1"+webhookurl
複製代碼

http 方法爲POST,body 參數以下

{
	"Id":3,
	"Currency":"ETH",
	"Amount":0.001,
	"Customerid":"client1245",
	"Webhookurl":":9090/123",
	"Expired_after":60,
	"Paymentmethod":{
		"Name":"ETH",
		"PaymentAddress":"0x130D3e6655f073e33235e567E7A1e1E1f59ddD79",
		"PaymentAccount":"",
		"PaymentMemo":"",
		"Priceinusd":"309.75108846",
		"Priceinbtc":"0.02369282"
	},
	"Receivedamount":0.0021,
	"Paidstatus":2
}
複製代碼

全部資產都屬於開發者本身麼?

  1. 全部資產都會自動被轉移到你指定的帳戶, 免手續費,1秒到帳。
  2. 在該程序重啓,或者意外退出以後,你能夠手動發指令要求程序把全部資產都轉移到你指定的帳戶。

例子:

curl -X POST -H "Content-Type: application/json" 127.0.0.1:8080/moneygohome
複製代碼

結果以下

total 20 account will send all balance to admin
複製代碼

支付的確認時間

  1. EOS: 3 分鐘
  2. Stellar: 2 分鐘
  3. Bitcoin/USDT: 60 分鐘
  4. Litecoin/Ethererum/DOGE: 120 分鐘

什麼是確認時間?爲何要關心確認時間?

數字貨幣從用戶發起轉帳請求,到收款方確認這筆付款不能回滾須要一點時間,比特幣須要的時間長,其餘須要的時間短一點。

支持哪些資產

理論上Mixin Network支持的均可以接受。如今支持 BTC, USDT, BCH, 以太坊和 ERC20, ETC, EOS 以及EOS上發的token, DASH, Litecoin, Doge, Horizen, MGD, NEM, XRP, XLM, 波場和波場上發的TRC10, Zcash.

目前的代碼庫默認支持的資產

如今代碼裏面默認支持的資產是EOS和恆星,由於他們均可以3分鐘完成支付確認。

想要支持更多的幣,把對應資產的變量放到 default_asset_id_group 裏面就能夠.

const (
	BTC_ASSET_ID  = "c6d0c728-2624-429b-8e0d-d9d19b6592fa"
	EOS_ASSET_ID  = "6cfe566e-4aad-470b-8c9a-2fd35b49c68d"
	USDT_ASSET_ID = "815b0b1a-2764-3736-8faa-42d694fa620a"
	ETC_ASSET_ID  = "2204c1ee-0ea2-4add-bb9a-b3719cfff93a"
	XRP_ASSET_ID  = "23dfb5a5-5d7b-48b6-905f-3970e3176e27"
	XEM_ASSET_ID  = "27921032-f73e-434e-955f-43d55672ee31"
	ETH_ASSET_ID  = "43d61dcd-e413-450d-80b8-101d5e903357"
	DASH_ASSET_ID = "6472e7e3-75fd-48b6-b1dc-28d294ee1476"
	DOGE_ASSET_ID = "6770a1e5-6086-44d5-b60f-545f9d9e8ffd"
	LTC_ASSET_ID  = "76c802a2-7c88-447f-a93e-c29c9e5dd9c8"
	SIA_ASSET_ID  = "990c4c29-57e9-48f6-9819-7d986ea44985"
	ZEN_ASSET_ID  = "a2c5d22b-62a2-4c13-b3f0-013290dbac60"
	ZEC_ASSET_ID  = "c996abc9-d94e-4494-b1cf-2a3fd3ac5714"
	BCH_ASSET_ID  = "fd11b6e3-0b87-41f1-a41f-f0e9b49e5bf0"
	XIN_ASSET_ID  = "c94ac88f-4671-3976-b60a-09064f1811e8"
	CNB_ASSET_ID  = "965e5c6e-434c-3fa9-b780-c50f43cd955c"
	XLM_ASSET_ID  = "56e63c06-b506-4ec5-885a-4a5ac17b83c1"
	TRON_ASSET_ID = "25dabac5-056a-48ff-b9f9-f67395dc407c"
	........
)
.......
.......

	// to support more asset, just add them in the following array
	default_asset_id_group := []string{XLM_ASSET_ID, EOS_ASSET_ID}
複製代碼

下一步的開發任務:

  1. 全部的資產能夠自動提取到開發者本身的冷錢包,而不是隻能轉移到Mixin Messenger帳戶。
  2. 能夠把收到的資產經過去中心化交易所自動轉換成USDT或者比特幣。
  3. 支持Mixin Messenger用戶付款。
  4. 能夠提供資產對應的美圓價格 在commit 8a634e23254e4841c2a9c3114b3eb847d46f55fc 中已經完成。
相關文章
相關標籤/搜索