2017-07-21 26 views
5

Tôi đang cố thực hiện yêu cầu đăng bài trên GDAX. Nhưng tôi luôn nhận được thông báo "chữ ký không hợp lệ". GDAX API Documents để tạo yêu cầu + ký: https://docs.gdax.com/#creating-a-requestGDAX Post Call trả về chữ ký không hợp lệ

Preshash chuỗi trả về như sau:

1500627733POST/đơn đặt hàng { "giá": "1000.0", "kích thước": "0.02", "gõ" : "giới hạn", "bên kia": "bán", "product_id": "BTC-EUR"}

phương pháp chữ ký của tôi:

public String generateSignature(String requestPath, String method, String body, String timestamp) { 
     try { 
      String prehash = timestamp + method.toUpperCase() + requestPath + body; 
      byte[] secretDecoded = Base64.getDecoder().decode(secretKey); 
      SecretKeySpec keyspec = new SecretKeySpec(secretDecoded, "HmacSHA256"); 
      Mac sha256 = (Mac) Mac.getInstance("HmacSHA256").clone(); 
      sha256.init(keyspec); 
      return Base64.getEncoder().encodeToString(sha256.doFinal(prehash.getBytes())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

phương thức yêu cầu của tôi:

private boolean placeLimitOrder(String currencyPair, String side, String price, String size) 
      throws UnirestException { 

     String timestamp = Instant.now().getEpochSecond() + ""; 
     String api_method = "/orders"; 
     String path = base_url + api_method; //base_url = https://api.gdax.com 
     String method = "POST"; 
     String b = "{\"price\":\"1000.0\",\"size\":\"0.02\",\"type\":\"limit\",\"side\":\"sell\",\"product_id\":\"BTC-EUR\"}"; 
     JsonNode n = new JsonNode(b); 
     String sig = generateSignature(api_method, method,b, timestamp); 

     HttpResponse<JsonNode> rep = Unirest.post(path).header("accept", "application/json") 
       .header("content-type", "application/json") 
       .header("CB-ACCESS-KEY", publicKey) 
       .header("CB-ACCESS-PASSPHRASE", passphrase) 
       .header("CB-ACCESS-SIGN", sig) 
       .header("CB-ACCESS-TIMESTAMP", timestamp) 
       .body(n) 
       .asJson(); 

     System.out.println(rep.getStatusText()); //Bad Request 

     System.out.println(rep.getBody().toString()); //invalid signature 

     System.out.println(sig); //returns something 


     return false; 
    } 

Tôi cũng đã cố gắng thực hiện cuộc gọi yêu cầu API với chứng mất ngủ nhưng trả về cùng một thông báo ("chữ ký không hợp lệ").

Bất kỳ manh mối nào?

Cảm ơn bạn rất nhiều trước!

+2

Cùng vấn đề tôi đang gặp phải. Bạn có bất kỳ giải pháp nào về vấn đề này không? – a4arpan

+0

Cũng gặp sự cố này, bạn có bao giờ tìm ra cách khắc phục sự cố này không? – thomallen

Trả lời

-1

Tôi gặp vấn đề tương tự.

tôi đã sử dụng http:

nhưng một trong những quyền https:

Vấn đề giải quyết.

1

Có vẻ như bạn đang ký dữ liệu thứ tự giá là một chuỗi, nhưng đối với nội dung trong bài đăng, bạn chuyển nó thành nút json. Điều này có thể không khớp khi gdax giải mã ký và so sánh dữ liệu tải trọng với phần thân đã được giải mã (ký) khi chúng nhận được.

Tại sao không chỉ gửi chuỗi làm nội dung và xóa ".asJson"?

.body(b) 

Tôi đã gặp sự cố tương tự khi thử nghiệm API trong C#. Sau 3 buổi chiều cố gắng. Tôi đã thử nghiệm gửi dữ liệu dưới dạng chuỗi và tôi đã có thể vượt qua lỗi chữ ký không hợp lệ.

Các vấn đề liên quan