Search code examples
djangopaypalpaypal-rest-sdk

I have a problem with get billings from paypal


I have a big problem with the webhook for confirms a subscribe agreements. I'm used the SDK [https://github.com/paypal/PayPal-Python-SDK/blob/master/samples/subscription/billing_agreements/get.py] If somebody could help me, my errors is the next:

Traceback (most recent call last):

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/core/handlers /exception.py", line 34, in inner response = get_response(request)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch return handler(request, *args, **kwargs)

File "/home/jjorge/src/guru/guru-payments/apps/paypal/views.py", line 69, in post settings.PAYPAL_CLIENT_SECRET

File "/home/jjorge/src/guru/guru-payments/apps/paypal/services.py", line 34, in execute paypal_secret_id

File "/home/jjorge/src/guru/guru-payments/apps/paypal/payment_methods.py", line 154, in get_billing_agreement 'client_secret': paypal_client_secret

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/paypalrestsdk/resource.py", line 110, in find return cls(api.get(url, refresh_token=refresh_token), api=api)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/paypalrestsdk/api.py", line 268, in get return self.request(util.join_url(self.endpoint, action), 'GET', headers=headers or {}, refresh_token=refresh_token)

File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/paypalrestsdk/api.py", line 171, in request return self.http_call(url, method, data=json.dumps(body), headers=http_headers) File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/paypalrestsdk/api.py", line 214, in http_call return self.handle_response(response, response.content.decode('utf-8')) File "/home/jjorge/venvs/payments/lib/python3.7/site-packages/paypalrestsdk/api.py", line 231, in handle_response

raise exceptions.ResourceNotFound(response, content)

paypalrestsdk.exceptions.ResourceNotFound: Failed. Response status: 404. Response message: Not Found. Error message: {"name":"RESOURCE_NOT_FOUND","debug_id":"9a7aa1a765763","message":"The requested resource was not found","information_link":"https://developer.paypal.com/docs/api/payments.billing-agreements#errors","details":[{"issue":"Requested resource ID was not found."}]}


Solution

  • Deprecation notice: The /v1/payments/billing-agreements endpoints are deprecated. Use the /v1/billing/subscriptions

    That is my solution, I had to implement a new function with the new api

    class PayPalPaymentMethod:
    
    @staticmethod
    def get_billing_subscription(billing_agreement_id, paypal_mode, paypal_client_id, paypal_secret_id):
        url = util.join_url('/v1/billing/subscriptions', billing_agreement_id)
        api = Api({
            'mode': paypal_mode,
            'client_id': paypal_client_id,
            'client_secret': paypal_secret_id
        })
        result = api.get(url)
        return result