You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

34 lines
798 B

import django, sys, os
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
django.setup()
from urllib.parse import parse_qs
from apiserver.api import models
ipns = models.IPN.objects.all()
transactions = models.Transaction.objects.filter(paypal_txn_id__isnull=False)
txs = {}
for tx in transactions:
txs[tx.paypal_txn_id] = tx
for ipn in ipns:
data = parse_qs(ipn.data)
if data.get('payment_status', [False])[0] != 'Completed':
continue
txn_id = data['txn_id'][0]
txn_type = data['txn_type'][0]
print('Processing tx id:', txn_id, '| type:', txn_type)
txs[txn_id].paypal_txn_type = txn_type
print('Performing bulk update...')
transactions.bulk_update(txs.values(), ['paypal_txn_type'])
print('Processed', ipns.count(), 'IPNs.')
print('Done.')