Crypto.com एक API प्रदान करता है जहां माना जाता है कि आप उनके एक्सचेंज प्लेटफॉर्म तक पहुंच सकते हैं। हालांकि, सी # उदाहरणों के संदर्भ में उनका दस्तावेज़ीकरण बेहद खराब और गलत है। मैं सी # का उपयोग कर अपने आरईएसटी कॉल प्रमाणित करने में असमर्थ हूं।

सभी private (खाते से संबंधित) कॉल के लिए आपको करना होगा अपने पेलोड JSON में एक sig पैरामीटर जोड़कर अपने अनुरोधों पर हस्ताक्षर करें

मेरे कोड का एक सरलीकृत संस्करण जो sig पैरामीटर की गणना करता है "nofollow noreferrer">private/get-account-summary तरीका कुछ इस तरह दिखता है (.net50):

private static string GetSignature()
{
    string sigPayload = "private/get-account-summary" + 1 + API_KEY + "currencyCRO" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

    var hash = new HMACSHA256(Encoding.UTF8.GetBytes(API_SECRET));
    var computedHash = hash.ComputeHash(Encoding.UTF8.GetBytes(sigPayload));

    return Convert.ToHexString(computedHash);
}

, जबकि इस हस्ताक्षर का उपयोग करने वाला अनुरोध इस तरह दिखता है:

POST https://api.crypto.com/v2/private/get-account-summary

{
    "id": "1",
    "method": "private/get-account-summary",
    "api_key": "AtKCpGWquAcFj7p7qdfL3Q",
    "params": {
        "currency": "CRO"
    },    
    "nonce": "1615048530368",
    "sig": "1A7C7183CAF2E71F7F7DAB6A5C7F74319E692F2638710292BDB4FDFAC6C864D6"
}

जहां तक ​​मुझे पता है, मैंने हस्ताक्षर बनाने के लिए उनके एल्गोरिदम को सही ढंग से लागू किया है और प्रश्न में विधि को कॉल करने के लिए सही पैरामीटर का भी उपयोग किया है (https://exchange-docs.crypto.com/spot/index.html#private-get-account-summary)। हालांकि, मुझे जो प्रतिक्रिया मिलती है वह मुझे बताती है कि मैं कुछ गलत कर रहा हूं:

{
    "id": 1,
    "method": "private/get-account-summary",
    "code": 10002,
    "message": "UNAUTHORIZED"
}

मुझे संदेह होने लगा है कि एपीआई private विधियों के लिए भी काम करता है। उनका समर्थन भयानक है और मुझे फिर से दस्तावेज़ीकरण पढ़ने के लिए भेजा। मैं किसी भी भाषा में किसी भी मदद की सराहना करता हूं। अगर मैं कम से कम सुनता हूं कि किसी और ने इसे दूसरी भाषा में किया है तो मैं उनके उदाहरण का उपयोग करके यह पता लगा सकता हूं कि मैं क्या गलत कर रहा हूं।

0
Coz 7 मार्च 2021, 18:19

1 उत्तर

सबसे बढ़िया उत्तर

नमूने में अंतिम पंक्ति को इस तरह बदलने की जरूरत है:

Convert.ToHexString(computedHash).ToLower();

अंत में मैंने अपनी सलाह का पालन किया और अन्य नमूना भाषाओं में से एक का उपयोग करके सेवा को कॉल करने का प्रयास किया। जब मैंने जावास्क्रिप्ट का उपयोग किया (जिसका दस्तावेज़ीकरण में एक बेहतर नमूना था) मैंने देखा है कि परिणामी sig कम मामला था।

0
Coz 15 मार्च 2021, 06:35