開發者訪問本地 http 接口,向用戶展現付款方法,用戶付款後程序會訪問本地回調URLgit
GitHub 地址github
步驟:golang
訪問 mixin.one/messenger 下載對應手機端App。web
中國大陸用戶能夠訪問 a.app.qq.com/o/simple.js… 下載sql
登錄 developer.mixin.one ,用App掃碼登陸shell
這個 教程對於新開發者頗有用。數據庫
git clone https://github.com/myrual/mixin-network-snapshot-golang
cd mixin-network-snapshot-golang
複製代碼
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.
)
複製代碼
go build mixin_snap.go
複製代碼
./mixin_snap
複製代碼
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裏面有兩種類型的支付:
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 有支付信息. 其中一個支付信息以下
用戶支付完畢後,程序會訪問本地+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
}
複製代碼
例子:
curl -X POST -H "Content-Type: application/json" 127.0.0.1:8080/moneygohome
複製代碼
結果以下
total 20 account will send all balance to admin
複製代碼
數字貨幣從用戶發起轉帳請求,到收款方確認這筆付款不能回滾須要一點時間,比特幣須要的時間長,其餘須要的時間短一點。
理論上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}
複製代碼
下一步的開發任務: