Add script that checks payments from Hello Asso
This commit is contained in:
parent
0346df11c2
commit
00c936f909
|
@ -0,0 +1,54 @@
|
||||||
|
# Copyright (C) 2020 by Animath
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
from django.core.management import BaseCommand
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
def handle(self, *args, **options): # noqa: C901
|
||||||
|
organization = "animath"
|
||||||
|
form_slug = "tfjmm-2018"
|
||||||
|
from_date = "2000-01-01"
|
||||||
|
url = f"https://api.helloasso.com/v5/organizations/{organization}/forms/Event/{form_slug}/payments" \
|
||||||
|
f"?from={from_date}&pageIndex=1&pageSize=10000&retrieveOfflineDonations=false"
|
||||||
|
headers = {
|
||||||
|
"Accept": "application/json",
|
||||||
|
"Authorization": f"Bearer {os.getenv('HELLO_ASSO_TOKEN', '')}",
|
||||||
|
}
|
||||||
|
http_response = requests.get(url, headers=headers)
|
||||||
|
response = http_response.json()
|
||||||
|
|
||||||
|
if http_response.status_code != 200:
|
||||||
|
message = response["message"]
|
||||||
|
self.stderr.write(f"Error while querying Hello Asso: {message}")
|
||||||
|
return
|
||||||
|
|
||||||
|
for payment in response:
|
||||||
|
if payment["state"] != "Authorized":
|
||||||
|
continue
|
||||||
|
|
||||||
|
payer = payment["payer"]
|
||||||
|
email = payer["email"]
|
||||||
|
qs = User.objects.filter(email=email)
|
||||||
|
if not qs.exists():
|
||||||
|
self.stderr.write(f"Warning: a payment was found by the email address {email}, "
|
||||||
|
"but this user is unknown.")
|
||||||
|
continue
|
||||||
|
user = qs.get()
|
||||||
|
if not user.registration.participates:
|
||||||
|
self.stderr.write(f"Warning: a payment was found by the email address {email}, "
|
||||||
|
"but this user is not a participant.")
|
||||||
|
continue
|
||||||
|
payment_obj = user.registration.payment
|
||||||
|
payment_obj.valid = True
|
||||||
|
payment_obj.type = "helloasso"
|
||||||
|
payment_obj.additional_information = f"Identifiant de transation : {payment['id']}\n" \
|
||||||
|
f"Date : {payment['date']}\n" \
|
||||||
|
f"Reçu : {payment['paymentReceiptUrl']}\n" \
|
||||||
|
f"Montant : {payment['amount'] / 100:.2f} €"
|
||||||
|
payment_obj.save()
|
||||||
|
self.stdout.write(f"{payment_obj} is validated")
|
|
@ -1,3 +1,4 @@
|
||||||
|
asgiref~=3.3.1
|
||||||
Django~=3.0
|
Django~=3.0
|
||||||
django-address~=0.2
|
django-address~=0.2
|
||||||
django-bootstrap-datepicker-plus~=3.0
|
django-bootstrap-datepicker-plus~=3.0
|
||||||
|
@ -18,5 +19,6 @@ phonenumbers~=8.9.10
|
||||||
psycopg2-binary~=2.8
|
psycopg2-binary~=2.8
|
||||||
ipython~=7.19.0
|
ipython~=7.19.0
|
||||||
python-magic==0.4.18
|
python-magic==0.4.18
|
||||||
|
requests~=2.25.0
|
||||||
sympasoap~=1.0
|
sympasoap~=1.0
|
||||||
whoosh~=2.7
|
whoosh~=2.7
|
|
@ -12,3 +12,6 @@
|
||||||
|
|
||||||
# Update matrix channels
|
# Update matrix channels
|
||||||
*/6 * * * * cd /code && python manage.py fix_matrix_channels &> /dev/null
|
*/6 * * * * cd /code && python manage.py fix_matrix_channels &> /dev/null
|
||||||
|
|
||||||
|
# Check payments from Hello Asso
|
||||||
|
*/6 * * * * cd /code && python manage.py check_hello_asso &> /dev/null
|
||||||
|
|
Loading…
Reference in New Issue