开源,免费的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 中已经完成。
相关文章
相关标签/搜索