Страница 1 из 1
мой налог
Добавлено: 2019-09-22 12:27:01
serega0295
к примеру я работаю как самозанятый и мне надо выдавать чеки через мой налог , просто в ручную выдавать очень тяжко будет когда много заказов
https://habr.com/ru/post/436656/
мой налог
Добавлено: 2019-09-22 12:44:20
Alex Keda
вкратце изложите чего там?
честно, здоровая портянка, мне её читать некогда.
если просто куда-то отправлять факт оплаты - это в общем-то несложно интегрируется, по примеру Komtet библиотеку напишите и всё
мой налог
Добавлено: 2019-09-24 16:19:00
serega0295
Чтобы быстро продемонстрировать концепт автоматизации используется Python 3.7.2 с библиотекой requests:
Код: Выделить всё
import requests
import datetime
import shutil
TIME_OFFSET = '+03:00'
DEVICE_ID = ''
REFRESH_TOKEN = ''
API_PROVIDER = 'https://lknpd.nalog.ru/api/v1/'
TOKEN = ''
INN = ''
def DO(method, params):
headers = {"Authorization":"Bearer "+TOKEN} if TOKEN != '' else {}
r = requests.post(API_PROVIDER+method, json=params, headers=headers)
print(r.text)
return r.json()
def get_token():
reqparam = {
"deviceInfo": {
"appVersion": "1.0.0",
"metaDetails": {
"browser": "",
"browserVersion": "",
"os": "android"
},
"sourceDeviceId": DEVICE_ID,
"sourceType": "android"
},
"refreshToken": REFRESH_TOKEN
}
res = DO('auth/token', reqparam)
# TODO: сохранять tokenExpireIn и не вызывать авторизацию каждый раз
return res['token']
# TODO: научиться нормально программировать
TOKEN = get_token()
def new_transaction(service, amount):
trans_time = datetime.datetime.now().isoformat()[:-3]+TIME_OFFSET
reqparam = {
"ignoreMaxTotalIncomeRestriction": False,
"operationTime": trans_time,
"paymentType": "CASH",
"requestTime": trans_time,
"services": [
{
"amount": amount,
"name": service,
"quantity": 1
}
],
"totalAmount": amount
}
res = DO('income', reqparam)
return res['approvedReceiptUuid']
def get_receipt(receipt_uuid):
headers = {"Authorization":"Bearer "+TOKEN}
r = requests.get(
'https://lknpd.nalog.ru/api/v1/receipt/'+INN+"/"+receipt_uuid+"/print",
stream=True,
headers=headers
)
with open('receipt.png', 'wb') as f:
r.raw.decode_content = True
shutil.copyfileobj(r.raw, f)
if __name__ == '__main__':
rec = new_transaction('Тестовая услуга', '1.00')
get_receipt(rec)
Подставьте необходимые значения — скрипт сработает, как надо. Можете добавлять обработчики ошибок и улучшать доставку — изложенный выше скрипт лишь показывает принцип работы с API НПД налоговой.
мой налог
Добавлено: 2019-09-24 17:44:28
Alex Keda
вам на факт успешной оплаты чтоли это дёргать?
мой налог
Добавлено: 2019-09-25 21:38:08
serega0295
да , что бы чек клиенту на email после успешной оплаты уходил
пример чека
Код: Выделить всё
https://lknpd.nalog.ru/api/v1/receipt/503199260777/2004smetz5/print