У объекта 'dict' нет атрибута 'META' Ошибка перенаправления

извините за опечатки, я пользуюсь переводом

Я хочу интегрировать виртуальный pos для метода оплаты, но ошибка, которую я получил, выглядит следующим образом

Ошибка; у объекта 'dict' нет атрибута 'META'

views.py:

@login_required(login_url="/user/login")
def payment(request):
options = {
    'api_key': 'api_key',
    'secret_key': 'secret_key',
    'base_url': 'sandbox-api.iyzipay.com'
}


payment_card = {
    'cardHolderName': 'John Doe',
    'cardNumber': '5528790000000008',
    'expireMonth': '12',
    'expireYear': '2030',
    'cvc': '123',
    'registerCard': '0'
}

buyer = {
    'id': 'BY789',
    'name': 'John',
    'surname': 'Doe',
    'gsmNumber': '+905350000000',
    'email': 'email@email.com',
    'identityNumber': '74300864791',
    'lastLoginDate': '2015-10-05 12:43:35',
    'registrationDate': '2013-04-21 15:12:09',
    'registrationAddress': 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    'ip': '85.34.78.112',
    'city': 'Istanbul',
    'country': 'Turkey',
    'zipCode': '34732'
}

address = {
    'contactName': 'Jane Doe',
    'city': 'Istanbul',
    'country': 'Turkey',
    'address': 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    'zipCode': '34732'
}

basket_items = [
    {
        'id': 'BI101',
        'name': 'Binocular',
        'category1': 'Collectibles',
        'category2': 'Accessories',
        'itemType': 'PHYSICAL',
        'price': '0.3'
    },
    {
        'id': 'BI102',
        'name': 'Game code',
        'category1': 'Game',
        'category2': 'Online Game Items',
        'itemType': 'VIRTUAL',
        'price': '0.5'
    },
    {
        'id': 'BI103',
        'name': 'Usb',
        'category1': 'Electronics',
        'category2': 'Usb / Cable',
        'itemType': 'PHYSICAL',
        'price': '0.2'
    }
]

request = {
    'locale': 'tr',
    'conversationId': '123456789',
    'price': '1',
    'paidPrice': '1.2',
    'currency': 'TRY',
    'installment': '1',
    'basketId': 'B67832',
    'paymentChannel': 'WEB',
    'paymentGroup': 'PRODUCT',
    'paymentCard': payment_card,
    'buyer': buyer,
    'shippingAddress': address,
    'billingAddress': address,
    'basketItems': basket_items
}

payment = iyzipay.Payment().create(request, options)
return render(request, "cart/payment.html")

коды брокерских фирм; https://github.com/iyzico/iyzipay-python

Может быть, вы осудите меня за попытку такой работы без знания основ :)

Вы изменяете значение request в своем коде в строке

request = {'locale': 'tr',...

Это вызывает строку

return render(request, "cart/payment.html")

использовать измененное значение request, вместо значения в

def payment(request):

Попробуйте изменить имя переменной запроса на что-то другое

ex:

request_api = {'locale': 'tr',...
payment = iyzipay.Payment().create(request_api, options)

Вы переопределяете переменную request своей пользовательской диктой, из-за чего возникает ошибка метаданных.

Измените имя переменной dict request на что-нибудь request_payload, например :

request_payload = {
    'locale': 'tr',
    'conversationId': '123456789',
    'price': '1',
    'paidPrice': '1.2',
    'currency': 'TRY',
    'installment': '1',
    'basketId': 'B67832',
    'paymentChannel': 'WEB',
    'paymentGroup': 'PRODUCT',
    'paymentCard': payment_card,
    'buyer': buyer,
    'shippingAddress': address,
    'billingAddress': address,
    'basketItems': basket_items
}
payment = iyzipay.Payment().create(request_payload, options)
return render(request, "cart/payment.html")

Вот и все.

Вернуться на верх