Что не так с моим счетом PayPal? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть небольшая проблема с выставлением счетов PayPal с использованием PayPal SDK в моем проекте Django. когда я пытаюсь выполнить этот код

invoice_id = ''
    invoice = Invoice({
        "merchant_info": {
            "email": '',  # You must change this to your sandbox email account
            "first_name": str(merchant.first_name),
            "last_name": str(merchant.last_name),
            "business_name": str(merchant_full_name),
            "phone": {
                "country_code": "001",
                "national_number": str(merchant.phone)
            },
            "address": {
                "line1": str(merchant_address.address),
                "city": str(merchant_address.city),
                "state": str(merchant_address.state),
                "postal_code": str(merchant_address.zip_code),
                "country_code": "US"
            }
        },
        "billing_info": [{"email": buyer.paypal_address}],
        "items": [
            {
                "name": "Slab",
                "quantity": 1,
                "unit_price": {
                    "currency": "USD",
                    "value": float(slab.price)
                }
            }
        ],
        "note": "Invoice for slab",
        "payment_term": {
            "term_type": "NET_45"
        },
        "shipping_info": {
            "first_name": buyer.first_name,
            "last_name": buyer.last_name,
            "business_name": str(buyer_full_name),
            "phone": {
                "country_code": "001",
                "national_number": str(buyer.phone)
            },
            "address": {
                "line1": str(buyer_address.address),
                "city": str(buyer_address.city),
                "state": str(buyer_address.state),
                "postal_code": str(buyer_address.zip_code),
                "country_code": "US"
            }
        },
        "shipping_cost": {
            "amount": {
                "currency": "USD",
                "value": 0
            }
        }
    })

    if invoice.create():
        print(json.dumps(invoice.to_dict(), sort_keys=False, indent=4))
        invoice_id = invoice['id']
        return invoice_id
    else:
        print(invoice.error)

Мой сервер вернул мне эти ошибки

INFO: paypalrestsdk.api: Запрос [POST]: https://api.sandbox.paypal.com/v1/oauth2/token ИНФОРМАЦИЯ: paypalrestsdk.api: Ответ [200]: ОК, продолжительность: 1.156739 с. INFO: paypalrestsdk.api: PayPal-Request-Id: 660f7807-961f-4460-bafd-18412b489a91 INFO: paypalrestsdk.api: Запрос [POST]: https://api.sandbox.paypal.com/v1/invoicing/invoices ИНФОРМАЦИЯ: paypalrestsdk.api: Ответ [401]: не авторизован, продолжительность: 1.213655s. ИНФОРМАЦИЯ: paypalrestsdk.api: Запрос [POST]: https://api.sandbox.paypal.com/v1/oauth2/token ИНФОРМАЦИЯ: paypalrestsdk.api: Ответ [200]: ОК, продолжительность: 1,53491 с.

Как я понимаю, это проблема с токеном PayPal, верно?

1 Ответ

0 голосов
/ 02 июля 2018

Вам необходимо подтвердить подлинность вашего запроса:

import requests, base64

# you can only encode byte objects
credentials = b"userid:password"
b64Val = base64.b64encode(credentials)
r=requests.post(api_URL, 
    headers={"Authorization": "Basic %s" % b64Val},
    data=payload)
...