开发者访问本地 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}
复制代码
下一步的开发任务: