मुख्य कंटेंट तक स्किप करें

चेंजलॉग

सितंबर 2026

10 सितंबर

HTML फ़ॉर्म अब साइन किया हुआ कंटेनर सबमिट करता है। इनवॉइस के अलग-अलग फ़ील्ड की जगह — data (JSON का base64url) और signature (data स्ट्रिंग का HMAC-SHA256)। endpoint invoices/createFromForm से बदलकर invoices/form हो गया। पुराने फ़ॉर्म अब काम नहीं करते और उन्हें दोबारा बनाना होगा: देखें HTML फ़ॉर्म का हस्ताक्षर

8 सितंबर

Webhook की बॉडी में संख्यात्मक फ़ील्ड अब संख्याएँ हैं। छह फ़ील्ड, जो पहले स्ट्रिंग के रूप में भेजे जाते थे, अब संख्याओं के रूप में भेजे जाते हैं: project.commissionRate, invoice.commissionFiatUSD, invoice.amountFiatUSD, invoice.amountFiat, invoice.calcAmountFiat, payment.amount। फ़ील्ड का सेट, उनके नाम और क्रम नहीं बदले हैं।

ध्यान रखें: आख़िर के शून्य हट जाते हैं, इसलिए 10.00 की राशि 10 बनकर आती है। 0.0001 से छोटी राशियाँ exponential notation में आती हैं, जैसे 1.0e-6 — सामान्य JSON पार्सिंग सही संख्या लौटाती है; सिर्फ़ स्ट्रिंग को हाथ से पार्स करना टूटता है।

रोलआउट से पहले बनी और अभी न पहुँची सूचनाएँ पुराने फ़ॉर्मैट में आती हैं। जब तक कतार खाली नहीं हो जाती, रिसीवर को दोनों रूप स्वीकार करने चाहिए — इसमें दो दिन से ज़्यादा नहीं लगता।

6 सितंबर

API के जवाबों में संख्यात्मक फ़ील्ड अब संख्याएँ हैं। invoices/list, payments/list और invoices/create पर लागू होता है।

फ़ील्डपहलेबाद में
commissionFiatUSD"0.10"0.1
amountFiatUSD"10.00"10
amountFiat"1000.00"1000
views"0"0
payment.amount"10.500000000"10.5

प्रोजेक्ट तक सीमित कुंजी अब सभी मेथड में पाबंदी लागू करती है। पहले कुछ मेथड प्रोजेक्ट को अनदेखा करते थे। अब सूची वाले मेथड में यह फ़िल्टर है, और दूसरे प्रोजेक्ट के इनवॉइस या वॉलेट का अनुरोध Restricted project के साथ ठुकरा दिया जाता है। जो मेथड प्रोजेक्ट की पाबंदी नहीं निभा सकता, वह ऐसी कुंजी के लिए बंद है। ब्यौरा “कुंजी का दायरा” सेक्शन में है।

भुगतानों की सूची अब बिना जुड़े भुगतान भी लौटाती है। पहले payments/list सिर्फ़ इनवॉइस से जुड़े भुगतान लौटाता था। अब नतीजों में आपके सभी वॉलेट के भुगतान होते हैं; बिना जुड़े भुगतान में invoice ब्लॉक नहीं होता। यही वे भुगतान हैं, जो invoices/bindPayment से मैन्युअल जोड़ने के लिए चाहिए।

इनवॉइस रद्द करना अब मना करने के कारण अलग-अलग बताता है। पहले इनवॉइस के न होने और शर्तों के पूरे न होने, दोनों पर सामान्य Invoice not found आता था। अब Invoice not found का मतलब सिर्फ़ यह है कि इनवॉइस मौजूद नहीं है, और शर्तें पूरी न होने पर Invoice cannot be canceled आता है।

बेढंगे ID अब ठुकरा दिए जाते हैं। invoices/list invoiceId, invoiceUid और projectId की जाँच करता है; payments/listwalletId और invoiceId की। जो मान खरा नहीं उतरता, उस पर फ़ील्ड के नाम के साथ Parameter is filled in incorrectly आता है। पहले ऐसा पैरामीटर चुपचाप गिरा दिया जाता था और नतीजे बिना फ़िल्टर लौटते थे।

अवधि की सीमाओं में अब बताया गया पूरा दिन शामिल है। startDate और endDate 00:00:00 से 23:59:59 तक समझे जाते हैं। पहले आख़िरी दिन पूरा कट जाता था, और एक दिन की क्वेरी सिर्फ़ ठीक आधी रात को बने रिकॉर्ड लौटाती थी। invoices/list, payments/list, statistics/invoices और statistics/payments पर लागू होता है।

बैलेंस के इतिहास में प्रोजेक्ट फ़ील्ड जुड़ा। billing/history मेथड के हर ऑपरेशन में अब projectId फ़ील्ड है। खाते के स्तर के ऑपरेशनों — टॉप-अप और बोनस — के लिए यह null है।

4 सितंबर

विवरण और सर्विस डेटा अब मूल रूप में लौटते हैं। description और serviceData फ़ील्ड पहले एनकोड होकर सहेजे जाते थे, और API के जवाबों में उद्धरण चिह्न " बनकर और छोटे का चिह्न < बनकर आता था। अब ठीक वही लौटता है, जो व्यापारी ने भेजा था। HTML में दिखाते समय मान को अपनी ओर से एस्केप करें।

HTML फ़ॉर्म सिर्फ़ POST स्वीकार करते हैं। एड्रेस बार में पैरामीटर वाले लिंक से इनवॉइस बनाना अब काम नहीं करता — पैरामीटर सिर्फ़ अनुरोध की बॉडी से पढ़े जाते हैं। अगर आप लिंक इस्तेमाल करते थे, तो उनकी जगह method="post" वाला फ़ॉर्म लगाएँ।

3 सितंबर

Webhook सूचनाओं पर अब हस्ताक्षर होता है। X-Timestamp और X-Signature हेडर जुड़े; हस्ताक्षर की गणना Webhook की गुप्त कुंजी पर HMAC-SHA256 से होती है। हस्ताक्षर की जाँच से आप असली सूचना को जालसाज़ी से अलग पहचान सकते हैं। तरीका और उदाहरण “Webhook हस्ताक्षर की जाँच” सेक्शन में हैं।

यह बदलाव पीछे से संगत है: अगर आप जाँच नहीं जोड़ते, तो आपका हैंडलर पहले की तरह काम करता रहता है।