2017-12-15 11 views
1
私は支払いの請求書を作成し、電報ボット経由で私の顧客に送信しようとしています

Blockchain: を私はV2- https://blockchain.info/api/apiは.MYコードを受け取る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) 

をし、これが応答である - U「{\ nは 『メッセージ』: 『内部ハンドラエラー』 \ n}は」私はチェックしたい後のお支払いを受け取ったされた私が間違っているの何 ?お支払いを確認する方法? btcまたはethereumの正確な合計でアドレスを送信するにはどうすればよいですか?

+0

あなたはpypiのブロックチェーンパッケージを見たことがありますか? https://pypi.python.org/pypi/blockchain/1.4.0 – pydvlpr

答えて

1

申し訳ありませんが、私はコメントを投稿するに十分な評判がないので、これは 私は唯一のオプションです。 @egorkhあなたはこの問題を解決しましたか?たぶん blockchain.infoサポートからの説明を受けたでしょうか?私は にそれについての質問を送ったが、彼らはあまりにも長い間答えている。

更新:最後に、解決策が見つかりました。

私の場合、 "内部ハンドラーエラー"というメッセージがAPIの解釈が間違っています。

balance_update要求をJava APIで実装していないため、私は自分でそれを行い、間違った方法で行いました。

{ "キー":keyk、 "ADDR":R、 "コールバック": "HTTPS%3A%2F%2Fdoors03.ru"、 "onNotificationメソッド":

私はこのパラメータを入れています」 KEEP "、" op ":" RECEIVE "}

これらのパラメータは、apiで提供されている他のメソッドと同様に、パラメータとして使用できます。これらのメソッドでは、コールバックリンクと同様に、パラメータはURLエンコードされます。しかし...この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":データオブジェクトの "text/plain"(および、おそらくコード化されたコールバックURL)

+0

こんにちは、あなたはこのようにバランスをチェックすることができますhttps://blockchain.info/rawaddr/1D*** 1D *** - あなたがしたいアドレスですチェックする。 今、私はetheriumアドレスの解決策を探しています。この1つは動作しません – egorkh

+0

私はコンテンツの種類を削除し、エンコードせずにリンクを貼り付けます。それでも同じエラー( – egorkh

+0

@egorkh、apiを使用した月以降、自分のサーバに問題があり、サポートがうまくいきませんでした。[restlet-client extension]を使ってrawリクエストをテストすることをお勧めしますhttps://chrome.google.com/webstore/detail/restlet-client-rest-api-t/aejoelaoggembcahagimdiliamlcdmfm)。[テストケース](https:// pastebin。com/C1hGwNmv)を "Restlet Client Repository"として設定し、適切なAPIキーとコールバックを設定します。適切な応答を受け取る必要があります。 – diabolusss

関連する問題