我试图创建付款账单,并通过电报bot发送给我的客户:我使用的是块链API 2-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,-is,做了一个三明治。我把它寄给我的客户(顺便说一句,有什么办法能给我的客户发一份确切的薪水)。在我想检查是否收到付款后:
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)这是响应- u'{\n消息:“内部处理程序错误”\n}‘我做错了什么?如何检查付款?如何发送地址与确切和btc或以太?
发布于 2018-01-04 11:42:35
对不起,我没有足够的声誉发表评论,所以这是我唯一的选择。@egorkh你解决这个问题了吗?也许您已经收到了blockchain.info支持的解释?我已就此事向他们提出了一个问题,但他们回答得太久了。
更新:终于找到了解决方案。
在我的例子中,“内部处理程序错误”消息的原因是对其API的错误解释。
由于他们没有在java中实现balance_update请求,所以我自己做了,而且我做错了。
我提出了这一参数:
{“键”:keyk,"addr":r,“回调”:“https%3A%2F%2F%2F邻s03.ru”,“onNotification”:“保持”,“op”:“接收”}
作为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();
}导致错误的主要原因可能是在数据对象(可能是编码的回调url)中放置了“Content”:“text/平原”。
https://stackoverflow.com/questions/47837442
复制相似问题