create account

[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책) by tradingideas

View this thread on: hive.blogpeakd.comecency.com
· @tradingideas ·
$10.62
[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)
고팍스 API를 이용하여 거래소에 주문을 내고 싶다는 생각에 시작한 프로젝트

지난 글 보기
[[개발이야기] 고팍스 API 사용기[1] : 거래내역 가져오기 성공](https://steemit.com/kr/@tradingideas/api-1)

--------------

지난 번 글에서 예제에 나오는 주문을 실행하였더니 signature 오류가 뜨는 것 까지 언급하였다.

오늘 퇴근 후 다시 작업 시작한다.

signature 오류의 원인을 찬찬히 살펴보았다. 문제는 signature를 만드는 시점의 데이터와 거래소로 보내는 데이터의 형태가 틀리기 때문에 signature오류가 발생하는 것 같다.

결국 아래 두 문장에서 request_body의 내용이 틀리다는 것으로 보인다.
~~~~
#필수 정보를 연결하여 prehash 문자열을 생성함
what = nonce + method + request_path + json.dumps(request_body, sort_keys=True)

req = requests.post(url = 'https://api.gopax.co.kr' + request_path, headers = custom_headers,json=request_body)
~~~~

디버깅을 해 본다.
what에는 아래 문장이 들어가 있다.
> '1526391980.336POST/orders{"amount": 2.0, "price": 30000.0, "side": "sell", "tradingPairName": "EOS-KRW", "type": "limit"}'

#
그리고 requests.post에 들어가는 request_body에는 아래 문장이 들어가 있다.
> {'amount': 2.0, 'price': 30000.0, 'side': 'sell', 'tradingPairName': 'EOS-KRW', 'type': 'limit'}

# 

굳이 차이를 보자면 '와 "의 차이로 보인다. what에 있는 문자열에 " 대신에 '로 넣을려고 하니, 방법을 모르겠다. 아마도 json.dumps라는 함수에서 입력으로 '를 넣어도 "로 바꾸는 부분이 있는 것 같다.

입력이 똑같은 것 같은데 왜 signature오류라고 뜨는지 모르겠다.

.........
.........
.........

이렇게 막힐 때는 뭔가 추가한 것을 빼고 하나씩 테스트해 보아야 한다.  무엇을 없애야 하나.  한 문장 한 문장 훓어보다보니 what을 구하는 문장에 있는 json.dumps라는 함수에 있는 sort_keys=True 라는 옵션이 보였다. 입력 변수에 있는 key에 대하여 sorting을 하라는 이야기인데, 이미 입력 변수에 있는 key는 sorting이 되어 있어서 큰 의미가 없어 보인다. 그래서 빼 본다.

그랬더니 what 값이 아래와 같이 바뀐다. sort_key가 있을 때와 orders에 들어가는 인자들의 위치가 변경되었다. 

> '1526392350.264POST/orders{"price": 30000.0, "type": "limit", "side": "sell", "tradingPairName": "EOS-KRW", "amount": 2.0}'

#

혹시 이것 때문에????

마지막까지 돌려본다. 

빙고!!  오 감동..

주문이 들어갔다.  이번 주문 API 문제를 푼 기념으로 3만원에 EOS 2주 매도 주문은 취소하지 않고 계속 둘 거다..

![](https://steemitimages.com/DQmczmngBXyoYzJbWL3tX74STL883BBNEaX88Z1S2F4xi6K/image.png)


이 문제와 관련하여 gopax의 예제를 올려 놓은 github에 질문을 남겨 놓았다. 역시나 아직까지 답신이 없다. 미래에 이 문제로 고생할 또 다른 개발자의 시간을 절약시켜주기 위하여 자답을 하였다. 이 글을 gopax에서 보면 예제를 수정해주기를 바란다.
![](https://steemitimages.com/DQmdUZ8Q3o53eaY4tUQk4QRgwfF4taiNQiESAcFJLCZrkLg/image.png)


---------------

자 정리해보자.

gopax에서 제공해주는 주문하기 파이썬 예제는 invalid signature 오류가 뜬다. 이 문제를 해결하는 방법은  signaure를 만드는 문장을 생성하는 코드를 아래와 같이 수정해야 한다.
> what = nonce + method + request_path + json.dumps(request_body)
#

---------------------

주문까지 성공을 했는데, 이제는 뭘 하나?
👍  , , , , , , , , , , , , , , , , , , ,
properties (23)
authortradingideas
permlinkapi-2-invalid-signature
categorykr
json_metadata{"tags":["kr","kr-dev","gopax"],"image":["https://steemitimages.com/DQmczmngBXyoYzJbWL3tX74STL883BBNEaX88Z1S2F4xi6K/image.png","https://steemitimages.com/DQmdUZ8Q3o53eaY4tUQk4QRgwfF4taiNQiESAcFJLCZrkLg/image.png"],"links":["https://steemit.com/kr/@tradingideas/api-1"],"app":"steemit/0.1","format":"markdown"}
created2018-05-15 14:07:45
last_update2018-05-15 14:07:45
depth0
children6
last_payout2018-05-22 14:07:45
cashout_time1969-12-31 23:59:59
total_payout_value8.601 HBD
curator_payout_value2.023 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,263
author_reputation473,979,989,726,345
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,830,999
net_rshares2,143,403,757,194
author_curate_reward""
vote details (20)
@lazyrodi ·
전 엄두도 못 내고 있습니다만 API 거래의 꽃은 재정거래일 것 같은데요. :)?
properties (22)
authorlazyrodi
permlinkre-tradingideas-api-2-invalid-signature-20180515t141135478z
categorykr
json_metadata{"tags":["kr"],"app":"steemit/0.1"}
created2018-05-15 14:11:33
last_update2018-05-15 14:11:33
depth1
children1
last_payout2018-05-22 14:11:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length45
author_reputation1,414,385,365,952
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,831,560
net_rshares0
@tradingideas ·
재정거래가 꽃이기는 하지요. 그런데 돈을 주고 받을 수 있는 방법이 없어요. 항상 한국이 프리미엄이 높다보니..
properties (22)
authortradingideas
permlinkre-lazyrodi-re-tradingideas-api-2-invalid-signature-20180515t155138351z
categorykr
json_metadata{"tags":["kr"],"app":"steemit/0.1"}
created2018-05-15 15:51:39
last_update2018-05-15 15:51:39
depth2
children0
last_payout2018-05-22 15:51:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length62
author_reputation473,979,989,726,345
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,848,119
net_rshares0
@neojew ·
성공하셨군요. 축하드립니다.
3만원에 매도되길 빕니다^^
properties (22)
authorneojew
permlinkre-tradingideas-api-2-invalid-signature-20180516t105202630z
categorykr
json_metadata{"tags":["kr"],"app":"steemit/0.1"}
created2018-05-16 10:52:03
last_update2018-05-16 10:52:03
depth1
children0
last_payout2018-05-23 10:52:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length31
author_reputation68,986,056,862,785
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,988,760
net_rshares0
@pairplay ·
You received 86.06 % upvote as a reward From round 3 on 2018.05.15! Congrats!
properties (22)
authorpairplay
permlinkre-tradingideas-api-2-invalid-signature-20180515t162034068z
categorykr
json_metadata""
created2018-05-15 16:20:36
last_update2018-05-15 16:20:36
depth1
children0
last_payout2018-05-22 16:20:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length77
author_reputation49,450,702,071,116
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,852,794
net_rshares0
@sweetpapa ·
저같은 문맹은 그냥 음.. 발자국만 남기고 갑니다 ㅋㅋ 
고팍스님이 언능 오셔야 할터인데요 ㅎㅎ
properties (22)
authorsweetpapa
permlinkre-tradingideas-api-2-invalid-signature-20180516t045155974z
categorykr
json_metadata{"tags":["kr"],"app":"steemit/0.1"}
created2018-05-16 04:52:00
last_update2018-05-16 04:52:00
depth1
children1
last_payout2018-05-23 04:52:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length53
author_reputation56,729,575,898,107
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,944,066
net_rshares0
@tradingideas ·
그러게요. 관심이 절실하게 필요한 시점인데요.
properties (22)
authortradingideas
permlinkre-sweetpapa-re-tradingideas-api-2-invalid-signature-20180516t095342497z
categorykr
json_metadata{"tags":["kr"],"app":"steemit/0.1"}
created2018-05-16 09:53:30
last_update2018-05-16 09:53:30
depth2
children0
last_payout2018-05-23 09:53:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length25
author_reputation473,979,989,726,345
root_title"[개발이야기] 고팍스 API 사용기[2] : 주문하기 성공 (invalid signature 오류 해결책)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id55,981,189
net_rshares0