Алгоритм обратного вызова

Есть сайт. На нем стоит онлайн оплата от сбера.

На адреc /callback/ приходят уведомления обратного вызова от сбербанка. На сайт приходит гет запрос. Его видно в логах моего домена.

Уведомления содержат нужную мне информацию, мне необходимо получить это значение в переменную, для того чтобы в последствии отправить эти данные на свой сервер.

Пока (в примере ниже) я просто пытаюсь сохранить строку, но ничего не выходит.

Запускал тестовые функции, они, после оплаты отрабатывают.

Пожалуйста, помогите разобраться, что я делаю не так?

Или помогите ответить на вопрос: Каким методом получить данные поступающие от стороннего сервиса в виде гет запроса, в переменную.

urls.py

path('callback/', callback, name="callback"),

views.py

def callback(self, request):
callback1

callback.py

def callback1():
i = requests.GET.get('')
x = i.text
with open('greed.txt', 'w') as file:
file.write(x) 
callback1()

Ответы (2 шт):

Автор решения: Антон

для get запроса вида

/callback/?some_key=value1&some_key=value2&another=123

значения можно получить следующим образом

def callback(request):
    some_key_values = request.GET.get('some_key')
    #  and do something
    return JsonResponse(dict(request.GET))  # print all keys in get query
→ Ссылка
Автор решения: Иван Куликов

Суть задачи заключалась в получении данных об оплате с сервера сбербанка, при помощи функции обратного вызова. Ниже представлена простая функция, но может быть кому то будет полезно. Запрашиваете у поддержки подключение callback уведомлений, указываете url на который они будут поступать. И...

urls.py

    ...
    path('callback/', callback, name="callback"),
    ...

views.py

def callback(request):
param = request.GET
x=param['orderNumber']
y=param['status']
z=param['operation']
h=param['mdOrder']
p=param['checksum']
token='ВВЕДИТЕ ЕСЛИ ДЛЯ ПЕРЕДАЧИ НА СЕРВЕР ИСПОЛЬЗУЕТСЯ ТОКЕН'
test = 'mdOrder'+';'+str(h)+';'+'operation'+';'+str(z)+';'+'orderNumber'+';'+str(x)+';'+'status'+';'+str(y)+';'
secret_key = b"СЕКРЕТНЫЙ КЛЮЧ МЕРЧАНТА"
total_params = total_params = test.encode('utf-8')
signature = hmac.new(secret_key, total_params, hashlib.sha256).hexdigest()
signatureup=signature.upper()

def check(amountd):
    content = requests.get('https://3dsec.sberbank.ru/payment/rest/getOrderStatusExtended.do?userName=ЛОГИНМЕРЧАНТА&password=ПАРОЛЬМЕРЧАНТА='+amountd)
    getcheck=content.json()
    sum=getcheck['amount']
    return sum
sum=check(x)
summa=float(sum/100)
done={'token':token,'ticket':x,'paymentsum':summa}
URL="URL адрес, на который отправляется информация"


if y=='1' and z=='deposited' and signatureup==p:
    result = requests.post(URL, json=done)
    with open('success.txt', 'a') as file:
        file.write('Сообщение от сервера:'+str(result.text)+' ')
        file.write('Номер заказа:'+str(x)+' ')
        file.write('Операция:'+str(z)+' ')
        file.write('Сумма:'+str(sum)+' ')
        file.write('Статус:'+str(y)+'\n')
        return HttpResponse('200', 'OK')
else:
    with open('errors.txt', 'a') as file:
        file.write(str('Операция отклонена')+' ')
        file.write('Номер заказа:'+str(x)+' ')
        file.write('Операция:'+str(z)+' ')
        file.write('Сумма:'+str(sum)+' ')
        file.write('Статус:'+str(y)+'\n')
        return HttpResponse('200', 'OK')
→ Ссылка