我正在尝试创建付款单并通过电报机器人发送给我的客户: 我正在使用区块链API V2 - https://blockchain.info/api/api接收.my代码是:
xpub='***'
keyk='02e57f1***'
url='https://api.blockchain.info/v2/receive?xpub='+str(xpub)+'&callback=https%3A%2F%2Fdoors03.ru&key='+keyk
x=requests.get(url)
r=x.json()
r=r['address']
r - 是一个地址。 我发送给我的客户(顺便说一下,有没有办法发送地址与确切的工资额)。我想检查后收到付款:
data={ "Content-Type": "text/plain","key":keyk,"addr":r,"callback":"https%3A%2F%2Fdoors03.ru","onNotification":"KEEP", "op":"RECEIVE"}
r = requests.post(url, data=data)
这是回复 - 你' {\ n"消息" :"内部处理程序错误" \ n}' 我做错了什么?如何查看付款?如何使用btc或ethereum的精确总和发送地址?
答案 0 :(得分:1)
抱歉,我没有足够的声誉发表评论,所以这是 我唯一的选择。 @egorkh你解决了这个问题吗?也许 你收到了blockchain.info支持的解释吗?我有 向他们发了一个问题,但他们回答的时间太长了。
更新:最后,我找到了解决方案。
在我的情况下," 内部处理程序错误的原因"消息对其API的解释错误。
由于他们还没有在他们的java-api中实现 balance_update 请求,我自己做了,我做错了。
我已经把这个参数:
{"键":keyk,"地址":R"回调":" HTTPS%3A%2F%2Fdoors03.ru&#34 ;," onNotification":" KEEP"," op":" RECEIVE"}
作为post参数,就像他们在api中提供的其他方法一样。在这些方法中,参数是URLEncoded,就像使用回调链接一样。但...
在这个HTML请求中,它们必须以json格式作为纯文本发送,不需要任何特殊编码,例如:
Map<String, String> params = new HashMap<String, String>();
params.put("addr", address);
params.put("callback", callbackUrl);
params.put("key", apiCode);
params.put("onNotification", keepOnNotification? "KEEP" : "DELETE");
params.put("confs", Integer.toString(confirmationCount));
params.put("op", StringUtils.isBlank(operationType) ? "ALL" : operationType);
//parse parameters map to json string(that's optional: you can write it directly as string)
String body = new Gson().toJson(params);
if (requestMethod.equals("POST")) {
byte[] postBytes = body.getBytes("UTF-8");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/plain");
conn.setRequestProperty("Content-Length", String.valueOf(postBytes.length));
conn.getOutputStream().write(postBytes);
conn.getOutputStream().close();
}
您的错误的主要原因可能是您放置了&#34; Content-Type&#34;:&#34; text / plain&#34;在数据对象(,也可能是编码的回调网址)。