teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2018/08/05 21:19

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -52,4 +52,10 @@
52
52
 
53
53
  5, 回答した後思い出したのですが、質問文のコードはJSON文字列で送っていますが。
54
54
  相手のAPIがjson文字列で送信しなさいってAPIドキュメントのどこに書いてありましたか?
55
- 仮想通貨のAPIは`body`にURLエンコード(クエリ文字列形式)で送ることが多いのですが。
55
+ 仮想通貨のAPIは`body`にURLエンコード(クエリ文字列形式)で送ることが多いのですが。
56
+
57
+ 6, `body`データを`post`していますが、`key`、`nonce`、`signature`が含まれていません。
58
+ > Create Order
59
+ > POST: https://bx.in.th/api/order/
60
+ >
61
+ > POSTed fields (in addition to the standard key, nonce, signature fields:

2

追記

2018/08/05 21:19

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -3,10 +3,10 @@
3
3
  プライベートAPIを一回も叩いたことがない場合は
4
4
  ライブラリを利用してそのライブラリのリクエスト内容を`Fiddler`で確認するのが一番早いのですが。
5
5
 
6
- 違ってそうなところ上げます。
6
+ APIを使った事はないですが、ドキュメントを見て、コード上違ってそうな部分指摘します。
7
7
  1, ノンスの型と送る値 unixタイム(要するに数値です)、以下は文字列です。
8
- **あとノンスは相手APIが許容する桁数がドキュメントに一切記載されていないので**
8
+ **ノンスは相手の取引所APIが許容する桁数がドキュメントに一切記載されていないので**
9
- いろいろ試してください。A取引所のAPIはノンスはこの桁までOK、B取引所はこの桁までOKと取引所で違います。そしてその件はドキュメントに一切書かれていません。
9
+ いろいろ試してください。A取引所のAPIはノンスはこの桁までOK、B取引所はこの桁までOKと取引所で違います。そしてその件はAPIドキュメントに一切書かれていません。
10
10
 
11
11
  ```Python
12
12
  timestamp = str(datetime.datetime.today())
@@ -16,7 +16,7 @@
16
16
  >
17
17
  > A common practice is to use unix time for that parameter.
18
18
 
19
- 2, Postで送るヘッダーフィールドが違います
19
+ 2, Postで送るヘッダーフィールドが違います
20
20
  ```Python
21
21
  'ACCESS-KEY' : api_key,
22
22
  'ACCESS-TIMESTAMP' : timestamp,
@@ -29,7 +29,9 @@
29
29
  > nonce - Nonce
30
30
  > signature - Signature
31
31
 
32
+ 3, 署名部分HMACが不要です、そしてパラメータが違います。
33
+ 署名形式:HMAC-256 → SHA-256
32
- 3, HMAC-256で署名したいわけではないので、hmac.newが不要ですhashlib.sha256のみ。そしてhash対象が違います。api_keynonceapi_secret
34
+ パラメータ:api_keynonceapi_secret
33
35
 
34
36
  ```Python
35
37
  signature = hmac.new(bytearray(api_secret.encode('utf-8')), message.encode('utf-8') , digestmod = hashlib.sha256 ).hexdigest()
@@ -48,5 +50,6 @@
48
50
 
49
51
  ---
50
52
 
51
- 5, 回答した後思い出したのですが、相手APIがjson形式で送信しなさいってどこに書てありますか?
53
+ 5, 回答した後思い出したのですが、質問文コードはJSON文字列で送っていますが。
54
+ 相手のAPIがjson文字列で送信しなさいってAPIドキュメントのどこに書いてありましたか?
52
- 仮想通貨のAPIはform-bodyにURLエンコード(クエリ文字列形式)で送ることが多いのですが。
55
+ 仮想通貨のAPIは`body`にURLエンコード(クエリ文字列形式)で送ることが多いのですが。

1

追記

2018/08/05 11:54

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -1,5 +1,7 @@
1
+ 参考にしているページの取引所は`bifFlyer`で対象とする取引所`bx.in.th`なので送り方まず違います。
2
+
1
3
  プライベートAPIを一回も叩いたことがない場合は
2
- ライブラリを利用してそのライブラリのリクエスト内容をFiddlerで確認するのが一番早いのですが。
4
+ ライブラリを利用してそのライブラリのリクエスト内容を`Fiddler`で確認するのが一番早いのですが。
3
5
 
4
6
  違ってそうなところを上げます。
5
7
  1, ノンスの型と送る値 unixタイム(要するに数値です)、以下は文字列です。
@@ -27,7 +29,7 @@
27
29
  > nonce - Nonce
28
30
  > signature - Signature
29
31
 
30
- 3, HMAC-256で署名したいわけではないので、hmac.newが不要ですhashlib.sha256のみ。
32
+ 3, HMAC-256で署名したいわけではないので、hmac.newが不要ですhashlib.sha256のみ。そしてhash対象が違います。api_keyとnonceとapi_secret
31
33
 
32
34
  ```Python
33
35
  signature = hmac.new(bytearray(api_secret.encode('utf-8')), message.encode('utf-8') , digestmod = hashlib.sha256 ).hexdigest()
@@ -42,4 +44,9 @@
42
44
  response = requests.post( base_url + path_url , data = body , headers = headers)
43
45
  ```
44
46
 
45
- `requests`を使った正しい`json`の送り方は`json = param`です。
47
+ `requests`を使った正しい`json`の送り方は`json = param`です。
48
+
49
+ ---
50
+
51
+ 5, 回答した後思い出したのですが、相手のAPIがjson形式で送信しなさいってどこに書いてありますか?
52
+ 仮想通貨のAPIはform-bodyにURLエンコード(クエリ文字列形式)で送ることが多いのですが。