[Zope] wampum example
Brad Clements
bkc@murkworks.com
Sun, 18 Feb 2001 22:05:07 -0500
On 16 Feb 2001, at 19:30, Jeremy Howard wrote:
> I've searched the web and have looked at the examples provided with the
> wampum product but cannot find a real world example. Is there anyone out
> there that is using this product and can offer some help. The only thing I
> need to know is how one gets the results back after making a call to the
> processorder method. TIA
"I'm trained to Help you!" (uh, that's what they taught us to say at CPR
class)
From the http://www.AdirondackCraft.com website:
Hope this pastes without wrapping. Here are two methods from my Order
class.
def chargeCard(self,REQUEST,ccash,Rec):
"""Using the ccash object, charge the card
return None or an error message
"""
rc = None
try:
results = ccash.processorder(REQUEST,order_id=self.ordernumber,
amount='usd '+'%5.2f' % self.totalchargeamount,
card_number=Rec.cardnumber,
card_exp=Rec.expiremonth+'/'+Rec.expireyear,
card_name=self.customername,
card_address=self.billingaddress1,
card_city=self.billingcity,
card_zip=self.billingpostalcode,
card_state=self.billingstateprovince,
card_country=self.billingcountry)
except WampumExceptions.WampumException, e:
"""record the exception"""
self.LogCCError('Cybercash Error:'+str(e))
try:
rc = e.MErrMsg
except:
rc = 'Unexpected Procssing Error, Please call 518-891-6525 for assistance'
self.logCCError("Couldn't return MErrMsg to customer!")
print "returning result 1",rc
self.status = 'Error'
self.errormessage = rc
self.update()
self.db.commit()
return rc
except Exception, e:
self.logCCError("Unexpected python exception"+str(e))
rc = 'Internal Error. Please call 518-891-6525 for assistance'
print "returning result 2",rc
self.status = 'Error'
self.errormessage = rc
self.update()
self.db.commit()
return rc
else:
rc = None
try:
self.updateChargeResults(results,Rec)
except Exception, e:
traceback.print_exc()
self.logCCError("Unexpected exception recording successful charge "+str(results))
self.logCCError("The exception is "+str(e))
rc = "Your credit card was charged, but we were unable to properly record the results in our database, Please call 518-891-6525 for assistance"
print "returning result 3",rc
return rc
def updateChargeResults(self,inst,Rec):
"""Given a cybercash instance, update ourselves"""
print "got inst ",str(inst)
if getattr(inst,'MStatus','') == 'success':
self.status = 'Submitted'
else:
self.status = 'Error'
try:
self.cclast4digits = Rec.cardnumber[-4:]
self.ccexpiredate = Rec.expiremonth+'/'+'30/'+Rec.expireyear
self.authorizationcode = getattr(inst,'auth_code',None)
self.actualbookamount= float(string.split(getattr(inst,'paid_amount','0'))[-1])
self.actualbookamounttext = getattr(inst,'paid_amount',None)
self.referencecode = getattr(inst,'ref_code',None)
self.chargestatus = getattr(inst,'MStatus',None)
self.avscode = getattr(inst,'avs_code',None)
self.actioncode = getattr(inst,'action_code',None)
try:
self.errormessage = getattr(inst,'aux_msg',None)
self.transactionid = getattr(inst,'cust_txn',None)
except:
traceback.print_exc()
except:
traceback.print_exc()
self.update()
print "commiting charge"
self.db.commit()
Brad Clements, bkc@murkworks.com (315)268-1000
http://www.murkworks.com (315)268-9812 Fax
netmeeting: ils://ils.murkworks.com AOL-IM: BKClements