本文整理汇总了Python中paypal.standard.ipn.models.PayPalIPN.save方法的典型用法代码示例。如果您正苦于以下问题:Python PayPalIPN.save方法的具体用法?Python PayPalIPN.save怎么用?Python PayPalIPN.save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类paypal.standard.ipn.models.PayPalIPN
的用法示例。
在下文中一共展示了PayPalIPN.save方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def create_ipn(request):
flag = None
ipnObj = None
form = PayPalIPNForm(request.POST)
if form.is_valid():
try:
ipnObj = form.save(commit=False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipnObj is None:
ipnObj = PayPalIPN()
ipnObj.initialize(request)
if flag is not None:
ipnObj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipnObj.verify_secret(form, request.GET['secret'])
else:
donation = get_ipn_donation(ipnObj)
if not donation:
raise Exception('No donation associated with this IPN')
verify_ipn_recipient_email(ipnObj, donation.event.paypalemail)
ipnObj.verify(None)
ipnObj.save()
return ipnObj
示例2: activate_subscription
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def activate_subscription(user, data, ipaddress):
subscr_date = dateutil.parser.parse(data.get('payment_date'))
subscr_effective = subscr_date + timedelta(days=30)
_dict = dict(
subscr_id = data.get('subscr_id'),
business = settings.PAYPAL_ITEM_NAME,
first_name = data.get('first_name', user.first_name),
last_name = data.get('last_name', user.last_name),
payer_email = data.get('payer_email'),
payer_id = data.get('payer_id'),
amount1 = data.get('amount1', 0.0),
amount2 = data.get('amount2', 0.0),
amount3 = data.get('amount3', 0.0),
mc_amount1 = data.get('mc_amount1', 0.0),
mc_amount2 = data.get('mc_amount2', 0.0),
mc_amount3 = data.get('mc_amount3', 0.0),
subscr_date = subscr_date,
username = user.username,
notify_version = data.get('notify_version'),
receiver_email = '[email protected]',
txn_type = data.get('txn_type'),
mc_currency = data.get('mc_currency'),
recurring = 1,
test_ipn = data.get('test_ipn', False),
subscr_effective = subscr_effective,
next_payment_date = subscr_effective,
time_created = datetime.now(),
ipaddress = ipaddress,
)
log.warn("saving subscription information for %s from IPN" % user.username)
ipn = PayPalIPN(**_dict)
ipn.save()
示例3: ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def ipn(request, item_check_callable=None):
"""
PayPal IPN endpoint (notify_url).
Used by both PayPal Payments Pro and Payments Standard to confirm transactions.
http://tinyurl.com/d9vu9d
PayPal IPN Simulator:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session
"""
#TODO: Clean up code so that we don't need to set None here and have a lot
# of if checks just to determine if flag is set.
flag = None
ipn_obj = None
# Clean up the data as PayPal sends some weird values such as "N/A"
data = request.POST.copy()
date_fields = ('time_created', 'payment_date', 'next_payment_date',
'subscr_date', 'subscr_effective')
for date_field in date_fields:
if data.get(date_field) == 'N/A':
del data[date_field]
form = PayPalIPNForm(data)
if form.is_valid():
try:
#When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit = False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipn_obj is None:
ipn_obj = PayPalIPN()
#Set query params and sender's IP address
ipn_obj.initialize(request)
if flag is not None:
#We save errors in the flag field
ipn_obj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipn_obj.verify_secret(form, request.GET['secret'])
else:
ipn_obj.verify(item_check_callable)
ipn_obj.save()
return HttpResponse("OKAY")
示例4: PayPalIPNForm
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
del data[date_field]
form = PayPalIPNForm(data)
if form.is_valid():
try:
# When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit=False)
except Exception, e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipn_obj is None:
ipn_obj = PayPalIPN()
# Set query params and sender's IP address
ipn_obj.initialize(request)
if flag is not None:
# We save errors in the flag field
ipn_obj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipn_obj.verify_secret(form, request.GET['secret'])
else:
ipn_obj.verify(item_check_callable)
ipn_obj.save()
return HttpResponseRedirect("/")
示例5: ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def ipn(request, item_check_callable=None):
"""
PayPal IPN endpoint (notify_url).
Used by both PayPal Payments Pro and Payments Standard to confirm transactions.
http://tinyurl.com/d9vu9d
PayPal IPN Simulator:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session
"""
# TODO: Clean up code so that we don't need to set None here and have a lot
# of if checks just to determine if flag is set.
flag = None
ipn_obj = None
# Clean up the data as PayPal sends some weird values such as "N/A"
# Also, need to cope with custom encoding, which is stored in the body (!).
# Assuming the tolerant parsing of QueryDict and an ASCII-like encoding,
# such as windows-1252, latin1 or UTF8, the following will work:
encoding = request.POST.get('charset', None)
encoding_missing = encoding is None
if encoding_missing:
encoding = DEFAULT_ENCODING
try:
data = QueryDict(request.body, encoding=encoding).copy()
except LookupError:
data = None
flag = "Invalid form - invalid charset"
if data is not None:
if hasattr(PayPalIPN._meta, 'get_fields'):
date_fields = [f.attname for f in PayPalIPN._meta.get_fields() if f.__class__.__name__ == 'DateTimeField']
else:
date_fields = [f.attname for f, m in PayPalIPN._meta.get_fields_with_model()
if f.__class__.__name__ == 'DateTimeField']
for date_field in date_fields:
if data.get(date_field) == 'N/A':
del data[date_field]
form = PayPalIPNForm(data)
if form.is_valid():
try:
# When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit=False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
formatted_form_errors = ["{0}: {1}".format(k, ", ".join(v)) for k, v in form.errors.items()]
flag = "Invalid form. ({0})".format(", ".join(formatted_form_errors))
if ipn_obj is None:
ipn_obj = PayPalIPN()
# Set query params and sender's IP address
ipn_obj.initialize(request)
if flag is not None:
# We save errors in the flag field
ipn_obj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipn_obj.verify_secret(form, request.GET['secret'])
else:
ipn_obj.verify(item_check_callable)
ipn_obj.save()
ipn_obj.send_signals()
if encoding_missing:
# Wait until we have an ID to log warning
log.warning("No charset passed with PayPalIPN: %s. Guessing %s", ipn_obj.id, encoding)
return HttpResponse("OKAY")
示例6: ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def ipn(request, item_check_callable=None):
"""
PayPal IPN endpoint (notify_url).
Used by both PayPal Payments Pro and Payments Standard to confirm transactions.
http://tinyurl.com/d9vu9d
PayPal IPN Simulator:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session
"""
#TODO: Clean up code so that we don't need to set None here and have a lot
# of if checks just to determine if flag is set.
flag = None
ipn_obj = None
# Clean up the data as PayPal sends some weird values such as "N/A"
# Also, need to cope with custom encoding, which is stored in the body (!).
# Assuming the tolerate parsing of QueryDict and an ASCII-like encoding,
# such as windows-1252, latin1 or UTF8, the following will work:
encoding = request.POST.get('charset', None)
if encoding is None:
flag = "Invalid form - no charset passed, can't decode"
data = None
else:
try:
data = QueryDict(request.body, encoding=encoding).copy()
except LookupError:
data = None
flag = "Invalid form - invalid charset"
if data is not None:
date_fields = ('time_created', 'payment_date', 'next_payment_date',
'subscr_date', 'subscr_effective')
for date_field in date_fields:
if data.get(date_field) == 'N/A':
del data[date_field]
form = PayPalIPNForm(data)
if form.is_valid():
try:
#When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit=False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipn_obj is None:
ipn_obj = PayPalIPN()
#Set query params and sender's IP address
ipn_obj.initialize(request)
if flag is not None:
#We save errors in the flag field
ipn_obj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipn_obj.verify_secret(form, request.GET['secret'])
else:
ipn_obj.verify(item_check_callable)
ipn_obj.save()
return HttpResponse("OKAY")
示例7: PaymentTestCase
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
class PaymentTestCase(TestCase):
def setUp(self):
self.ipn = PayPalIPN(**DUMMY_IPN)
self.ipn.save()
self.user = User(username="[email protected]", email="[email protected]", password="p")
self.user.save()
self.famille = models.Famille(user=self.user)
self.famille.save()
def tearDown(self):
self.ipn.delete()
self.famille.delete()
self.user.delete()
def test_sign_user_unsign_ok(self):
signed_value = payment.signer.sign_user(self.famille)
value = payment.signer.unsign(signed_value)
expected = "f%s" % self.famille.pk
self.assertEqual(value, expected)
def test_sign_user_unsign_ko(self):
signed_value = payment.signer.sign_user(self.famille)
signed_value = signed_value[:-1]
self.assertRaises(BadSignature, payment.signer.unsign, signed_value)
def test_transaction_is_legit(self):
signed_value = payment.signer.sign_user(self.famille)
self.ipn.invoice = signed_value
self.assertTrue(payment.signer.transaction_is_legit(self.ipn))
def test_transaction_is_legit_wrong_item_number(self):
self.ipn.item_number = "toto"
self.assertFalse(payment.signer.transaction_is_legit(self.ipn))
def test_transation_is_legit_wrong_invoice(self):
self.ipn.invoice = "VDF_f%s:iaozhdazposujazdjqsio" % self.famille.pk
self.assertFalse(payment.signer.transaction_is_legit(self.ipn))
def test_user_from_ipn(self):
self.ipn.invoice = payment.signer.sign_user(self.famille)
f = payment.signer.user_from_ipn(self.ipn)
self.assertEqual(f, self.famille)
def test_user_from_ipn_no_user(self):
famille = models.Famille()
famille.pk = 122
self.ipn.invoice = payment.signer.sign_user(famille)
self.assertRaises(models.Famille.DoesNotExist, payment.signer.user_from_ipn, self.ipn)
def test_user_from_ipn_wrong_signature(self):
self.ipn.invoice = "VDF_f%s:iaozhdazposujazdjqsio" % self.famille.pk
self.assertRaises(BadSignature, payment.signer.user_from_ipn, self.ipn)
def test_premium_signup_ok(self):
self.assertFalse(self.famille.is_premium)
self.ipn.invoice = payment.signer.sign_user(self.famille)
payment.signer.premium_signup(self.ipn)
famille = models.Famille.objects.get(pk=self.famille.pk)
self.assertTrue(famille.is_premium)
expected_expires = datetime.now(utc) + timedelta(days=31)
expected_expires = expected_expires.replace(hour=0, minute=0, second=0, microsecond=0)
self.assertEqual(famille.plan_expires_at, expected_expires)
self.assertEqual(famille.ipn, self.ipn)
def test_compute_expires_at_invalid(self):
self.ipn.item_number = "blah"
self.assertRaises(ValueError, payment.compute_expires_at, self.ipn)
def test_compute_expires_at_presta(self):
self.ipn.item_number = payment.PREMIUM_IDS["12p"]
expires_at = payment.compute_expires_at(self.ipn)
expected = date.today() + timedelta(weeks=52)
self.assertEqual(expires_at, expected)
def test_compute_expires_at_famille(self):
expires_at = payment.compute_expires_at(self.ipn)
expected = date.today() + timedelta(days=31)
self.assertEqual(expires_at, expected)
示例8: PayPalIPN
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipnObj is None:
ipnObj = PayPalIPN()
ipnObj.initialize(request)
if flag is not None:
ipnObj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipnObj.verify_secret(form, request.GET['secret'])
else:
donation = get_ipn_donation(ipnObj)
ipnObj.verify(None, donation.event.paypalemail)
ipnObj.save()
return ipnObj
def get_ipn(request):
ipnObj = PayPalIPN()
ipnObj.initialize(request)
return ipnObj
def get_ipn_donation(ipnObj):
if ipnObj.custom:
toks = ipnObj.custom.split(':')
pk = int(toks[0])
domainId = long(toks[1])
donationF = Donation.objects.filter(pk=pk)
donation = None
if donationF.exists():
示例9: ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def ipn(request, item_check_callable=None):
"""
The response from Paypal Payment
{u'protection_eligibility': [u'Eligible'],
u'last_name': [u'R'],
u'txn_id': [u'1B883441C5191701K'],
u'receiver_email': [u'[email protected]'],
u'payment_status': [u'Completed'],
u'payment_gross': [u'100.00'],
u'tax': [u'0.00'],
u'residence_country': [u'US'],
u'invoice': [u'1461'],
u'address_state': [u'CA'],
u'payer_status': [u'verified'],
u'txn_type': [u'web_accept'],
u'address_country': [u'United States'],
u'handling_amount': [u'0.00'],
u'payment_date': [u'01:23:03 Jul 04, 2014 PDT'],
u'first_name': [u'XXXXXXXXX'], u'item_name': [u''],
u'address_street': [u'1 Main St'],
u'charset': [u'windows-1252'],
u'custom': [u''],
u'notify_version': [u'3.8'],
u'address_name': [u'XXXXXXXXX'],
u'test_ipn': [u'1'],
u'item_number': [u''],
u'receiver_id': [u'7EEGW6KXU7H3G'],
u'transaction_subject': [u''],
u'business': [u'[email protected]'],
u'payer_id': [u'YQG53MRMSMVT8'],
u'verify_sign': [u'AMIsJErLWFh1ByQ-Pn.oseCWp0SBAOA1.0fCwFL.qfIIq6GQoS36n5i8'],
u'address_zip': [u'95131'],
u'payment_fee': [u'3.20'],
u'address_country_code': [u'US'],
u'address_city': [u'San Jose'],
u'address_status': [u'confirmed'],
u'mc_fee': [u'3.20'],
u'mc_currency': [u'USD'],
u'shipping': [u'0.00'],
u'payer_email': [u'[email protected]'],
u'payment_type': [u'instant'],
u'mc_gross': [u'100.00'],
u'ipn_track_id': [u'59b0e84327236'],
u'quantity': [u'1']
}
"""
"""
PayPal IPN endpoint (notify_url).
Used by both PayPal Payments Pro and Payments Standard to confirm transactions.
http://tinyurl.com/d9vu9d
PayPal IPN Simulator:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session
"""
#TODO: Clean up code so that we don't need to set None here and have a lot
# of if checks just to determine if flag is set.
flag = None
ipn_obj = None
# Clean up the data as PayPal sends some weird values such as "N/A"
# Also, need to cope with custom encoding, which is stored in the body (!).
# Assuming the tolerate parsing of QueryDict and an ASCII-like encoding,
# such as windows-1252, latin1 or UTF8, the following will work:
encoding = request.POST.get('charset', None)
if encoding is None:
flag = "Invalid form - no charset passed, can't decode"
data = None
else:
try:
data = QueryDict(request.body, encoding=encoding).copy()
except LookupError:
data = None
flag = "Invalid form - invalid charset"
if data is not None:
date_fields = ('time_created', 'payment_date', 'next_payment_date',
'subscr_date', 'subscr_effective')
for date_field in date_fields:
if data.get(date_field) == 'N/A':
del data[date_field]
form = PayPalIPNForm(data)
if form.is_valid():
try:
#When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit=False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipn_obj is None:
ipn_obj = PayPalIPN()
#.........这里部分代码省略.........
示例10: ipn
# 需要导入模块: from paypal.standard.ipn.models import PayPalIPN [as 别名]
# 或者: from paypal.standard.ipn.models.PayPalIPN import save [as 别名]
def ipn(request, item_check_callable=None, host_id=None, trans_id=None):
"""
PayPal IPN endpoint (notify_url).
Used by both PayPal Payments Pro and Payments Standard to confirm transactions.
http://tinyurl.com/d9vu9d
PayPal IPN Simulator:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session
#what triggers this view?
"""
#TODO: Clean up code so that we don't need to set None here and have a lot
# of if checks just to determine if flag is set.
flag = None
ipn_obj = None
# Clean up the data as PayPal sends some weird values such as "N/A"
# Also, need to cope with custom encoding, which is stored in the body (!).
# Assuming the tolerant parsing of QueryDict and an ASCII-like encoding,
# such as windows-1252, latin1 or UTF8, the following will work:
encoding = request.POST.get('charset', None)
if encoding is None:
flag = "Invalid form - no charset passed, can't decode"
data = None
else:
try:
data = QueryDict(request.body, encoding=encoding).copy()
except LookupError:
data = None
flag = "Invalid form - invalid charset"
if data is not None:
date_fields = ('time_created', 'payment_date', 'next_payment_date',
'subscr_date', 'subscr_effective')
for date_field in date_fields:
if data.get(date_field) == 'N/A':
del data[date_field]
form = PayPalIPNForm(data) #from paypal.standard.ipn.forms import PayPalIPNForm
if form.is_valid():
try:
#When commit = False, object is returned without saving to DB.
ipn_obj = form.save(commit=False)
except Exception as e:
flag = "Exception while processing. (%s)" % e
else:
flag = "Invalid form. (%s)" % form.errors
if ipn_obj is None:
ipn_obj = PayPalIPN() #from paypal.standard.ipn.models import PayPalIPN
#Set query params and sender's IP address
ipn_obj.initialize(request)
#Store the invoice value so i can use it to update the transactions model
invoice_sent = ipn_obj.invoice
#Add other host characteristicsto the model
#Eventually add transaction_id to the ipn_obj model
if host_id:
host = get_object_or_404(UserInfo, pk=host_id)
ipn_obj.host_email = host.email
ipn_obj.host_fname = host.first_name
ipn_obj.host_lname = host.last_name
ipn_obj.host_st_address1 = host.st_address1
ipn_obj.host_st_address2 = host.st_address2
if trans_id:
trans = Transaction.objects.get(pk=trans_id)
ipn_obj.trans_table_id = trans.id
#the following set_flag is defined in paypal.standard.modle.spy, flat var is passed as the "info" parameter
if flag is not None:
#We save errors in the flag field
ipn_obj.set_flag(flag)
else:
# Secrets should only be used over SSL.
if request.is_secure() and 'secret' in request.GET:
ipn_obj.verify_secret(form, request.GET['secret'])
else:
ipn_obj.verify(item_check_callable)
ipn_obj.save()
ipn_obj.send_signals()
#JMY ADDED: Update the Transaction Table to confirm we need to transation ID but only have invoice on the paypal IPN
if trans_id:
trans.payment_processed = True
trans_table_id = trans.id
trans.payment_method = "Paypal"
trans.save()
#update the userinfo table to add an account balance
new_balance = trans.balance_created_packages
userinfo = UserInfo.objects.get(pk=trans.enduser.id)
if new_balance:
userinfo.account_balance_packages = new_balance
userinfo.save()
#send emails
notify_host_shipment_paid(request,trans_table_id)
notify_enduser_shipment_paid(request, trans_table_id)
#.........这里部分代码省略.........