2017-12-15 3 views
1
내가 지불 청구서를 작성하고 전보 봇을 통해 내 고객에게 보내려고하고

Blockchain : 을 내가 V2- https://blockchain.info/api/api가 누군 데 코드를받을 blockchain API를 사용하고있다 :는 정보 지갑 체크 지불

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 주소가 만들어졌다. 나는 그것을 내 costumer에게 보냅니다 (그런데 지불을위한 정확한 금액의 주소를 보내는 방법이 있습니다). 내가 지불 받았다되었다되어 있는지 확인하려면 후 :

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

pypi에서 블록 체인 패키지를 살펴 보셨습니까? https://pypi.python.org/pypi/blockchain/1.4.0 – pydvlpr

답변

1

죄송합니다. 의견을 게시하는 데 충분한 평판이 없으므로, 여기는 유일한 옵션입니다. @egorkh이 문제를 해결 했습니까? 어쩌면 blockchain.info 지원에서 설명을 받았습니까? 나는 에게 그것에 관한 질문을 보냈지 만, 그들은 너무 오랫동안 대답하고 있습니다.

업데이트 : 마지막으로 해결책을 찾았습니다.

내 경우에는 "내부 처리기 오류"메시지의 API가 잘못 해석되었습니다.

그들은 java-api에서 balance_update 요청을 구현하지 않았기 때문에 내가 직접 만들었고 잘못된 방식으로 만들었습니다.

{ "키": keyk, "요지"R "콜백": "HTTPS % 3A % 2F % 2Fdoors03.ru", "onNotification"

나는이 매개 변수를 뒀다 " KEEP ","op ":"RECEIVE "}

매개 변수는 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(); 
} 

"Content-Type": 데이터 객체 (및 콜백 URL)에 "text/plain"이 있습니다.

+0

안녕하세요,이 방법으로 잔액을 확인할 수 있습니다. https://blockchain.info/rawaddr/1D*** 1D *** - 원하는 주소입니다. 확인하다. 지금 etherium 주소에 대한 해결책을 찾고 있는데요. 이 하나가 작동하지 않습니다 – egorkh

+0

콘텐츠 유형을 제거하고 인코딩없이 링크를 붙여 넣습니다. 여전히 동일한 오류 ( – egorkh

+0

@egorkh 잘, 그들의 API를 사용하는 달 후에 나는 그들의 서버가 확실히 문제가 있고 도움이 지원이 최선이 아니라는 것을 발견했다. 나는 [restlet-client extension]을 사용하여 원시 요청을 테스트하도록 제안 할 수있다. https://chrome.google.com/webstore/detail/restlet-client-rest-api-t/aejoelaoggembcahagimdiliamlcdmfm) 내 [test case] (https : // pastebin.com/C1hGwNmv)를 "Restlet Client Repository"로 설정하고 적절한 API 키와 콜백을 설정하십시오. 적절한 응답을 받아야합니다. – diabolusss