|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Issue with "authorize" transition in finance_workflowHi all, I'm progressing with my pay-for-membership package but have hit a roadblock with the "authorize" transition in my package. Essentially, within a subscriber to Products.PlonePAS.interfaces.events.IUserInitialLoginInEvent I do the following: <code> subscribers.py: def buyMembership(event): """ Redirect new member to payment processors website for payment """ if IMembraneUser.providedBy(event.object): # TODO:: Is _getMembraneObject() bad? if ISubscribemember.providedBy(event.object._getMembraneObject()): member = event.object._getMembraneObject() site = member.portal_url.getPortalObject() manage_options = IGetPaidManagementOptions(site) cart_util = getUtility(IShoppingCartUtility) cart = cart_util.get(site, create=True) createLineItem(member, cart) order_manager = getUtility(IOrderManager) order = Order() order.finance_workflow.fireTransition('create') order.processor_id = manage_options.payment_processor setContactInfo(order, member) order.order_id = order_manager.newOrderId() order.user_id = member.getId() order.shopping_cart = loads(dumps(cart)) order_manager.store(order) cart_util.destroy(site) member.lastOrderID = order.order_id def createLineItem(member, cart): line = PayableLineItem() line.uid = member.getMemberType() line.item_id = member.getMemberType() line.name = member.getMemberType() line.description = member.getMemberType() line.cost = member.getPrice() line.product_code = member.getMemberType() line.quantity = 1 cart[line.item_id] = line def setContactInfo(order, member): bill_address = payment.BillingAddress() bill_address.bill_first_line = member.getMemberAddress() bill_address.bill_city = member.getCity() bill_address.bill_state = member.getMemberState() bill_address.bill_country = "US" bill_address.bill_postal_code = member.getZip() contact_info = payment.ContactInformation() order.contact_information = contact_info order.billing_address = bill_address order.shipping_address = payment.ShippingAddress() </code> I tried doing the 'authorize' transition in here but it errored. So I've moved it to a utility browser view that creates the PayPal button in login_success.pt. The code for the button is as follows: <code> browser/common.py: class SubscribeMemberView(BrowserView): def checkout_button(self): site = getUtility(ISiteRoot) mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() if ISubscribemember.providedBy(member): getpaidoptions = IGetPaidManagementPaymentOptions(self.context) order_manager = getUtility(IOrderManager) order = order_manager.get(member.getLastOrderID()) order.finance_workflow.fireTransition('authorize') processor = getAdapter(self.context, IPaymentProcessor, getpaidoptions.payment_processor) if getpaidoptions.payment_processor == 'Paypal Website Payments Standard': button = processor.cart_post_button(order) return button else: return '' </code> When the above code runs, though, I get a TypeError. My pdb session is here for your perusal[1]. Can anyone give any ideas as to why this doesn't work (a lot of this code was copied from getpaid.paypal/brower/paypalbutton.py so should work). Thanks, Tim [1] http://duffyd.pastebin.com/f779a7fca --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "getpaid-dev" group. To post to this group, send email to getpaid-dev@... To unsubscribe from this group, send email to getpaid-dev+unsubscribe@... For more options, visit this group at http://groups.google.com/group/getpaid-dev?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: Issue with "authorize" transition in finance_workflowSorry, the full traceback is here[1]. [1] http://duffyd.pastebin.com/f510a43d9 On Tue, 2009-05-12 at 09:13 +1200, Tim Knapp wrote: > Hi all, > > I'm progressing with my pay-for-membership package but have hit a > roadblock with the "authorize" transition in my package. Essentially, > within a subscriber to > Products.PlonePAS.interfaces.events.IUserInitialLoginInEvent I do the > following: > > <code> > subscribers.py: > def buyMembership(event): > """ > Redirect new member to payment processors website > for payment > """ > if IMembraneUser.providedBy(event.object): > # TODO:: Is _getMembraneObject() bad? > if > ISubscribemember.providedBy(event.object._getMembraneObject()): > member = event.object._getMembraneObject() > site = member.portal_url.getPortalObject() > manage_options = IGetPaidManagementOptions(site) > cart_util = getUtility(IShoppingCartUtility) > cart = cart_util.get(site, create=True) > createLineItem(member, cart) > order_manager = getUtility(IOrderManager) > order = Order() > order.finance_workflow.fireTransition('create') > order.processor_id = manage_options.payment_processor > setContactInfo(order, member) > order.order_id = order_manager.newOrderId() > order.user_id = member.getId() > order.shopping_cart = loads(dumps(cart)) > order_manager.store(order) > cart_util.destroy(site) > member.lastOrderID = order.order_id > > def createLineItem(member, cart): > line = PayableLineItem() > line.uid = member.getMemberType() > line.item_id = member.getMemberType() > line.name = member.getMemberType() > line.description = member.getMemberType() > line.cost = member.getPrice() > line.product_code = member.getMemberType() > line.quantity = 1 > cart[line.item_id] = line > > def setContactInfo(order, member): > bill_address = payment.BillingAddress() > bill_address.bill_first_line = member.getMemberAddress() > bill_address.bill_city = member.getCity() > bill_address.bill_state = member.getMemberState() > bill_address.bill_country = "US" > bill_address.bill_postal_code = member.getZip() > contact_info = payment.ContactInformation() > order.contact_information = contact_info > order.billing_address = bill_address > order.shipping_address = payment.ShippingAddress() > </code> > > I tried doing the 'authorize' transition in here but it errored. So I've > moved it to a utility browser view that creates the PayPal button in > login_success.pt. The code for the button is as follows: > > <code> > browser/common.py: > class SubscribeMemberView(BrowserView): > > def checkout_button(self): > site = getUtility(ISiteRoot) > mtool = getToolByName(self.context, 'portal_membership') > member = mtool.getAuthenticatedMember() > if ISubscribemember.providedBy(member): > getpaidoptions = > IGetPaidManagementPaymentOptions(self.context) > order_manager = getUtility(IOrderManager) > order = order_manager.get(member.getLastOrderID()) > order.finance_workflow.fireTransition('authorize') > processor = getAdapter(self.context, IPaymentProcessor, > getpaidoptions.payment_processor) > if getpaidoptions.payment_processor == 'Paypal Website > Payments Standard': > button = processor.cart_post_button(order) > return button > else: > return '' > </code> > > When the above code runs, though, I get a TypeError. My pdb session is > here for your perusal[1]. > > Can anyone give any ideas as to why this doesn't work (a lot of this > code was copied from getpaid.paypal/brower/paypalbutton.py so should > work). > > Thanks, > Tim > > [1] http://duffyd.pastebin.com/f779a7fca > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "getpaid-dev" group. To post to this group, send email to getpaid-dev@... To unsubscribe from this group, send email to getpaid-dev+unsubscribe@... For more options, visit this group at http://groups.google.com/group/getpaid-dev?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: Issue with "authorize" transition in finance_workflowHi, Just for the record I fixed this by doing a getMultiAdapter for the ILineItemFactory and creating the item in the cart using this. All works now! -Tim On Tue, 2009-05-12 at 09:26 +1200, Tim Knapp wrote: > Sorry, the full traceback is here[1]. > > [1] http://duffyd.pastebin.com/f510a43d9 > > On Tue, 2009-05-12 at 09:13 +1200, Tim Knapp wrote: > > Hi all, > > > > I'm progressing with my pay-for-membership package but have hit a > > roadblock with the "authorize" transition in my package. Essentially, > > within a subscriber to > > Products.PlonePAS.interfaces.events.IUserInitialLoginInEvent I do the > > following: > > > > <code> > > subscribers.py: > > def buyMembership(event): > > """ > > Redirect new member to payment processors website > > for payment > > """ > > if IMembraneUser.providedBy(event.object): > > # TODO:: Is _getMembraneObject() bad? > > if > > ISubscribemember.providedBy(event.object._getMembraneObject()): > > member = event.object._getMembraneObject() > > site = member.portal_url.getPortalObject() > > manage_options = IGetPaidManagementOptions(site) > > cart_util = getUtility(IShoppingCartUtility) > > cart = cart_util.get(site, create=True) > > createLineItem(member, cart) > > order_manager = getUtility(IOrderManager) > > order = Order() > > order.finance_workflow.fireTransition('create') > > order.processor_id = manage_options.payment_processor > > setContactInfo(order, member) > > order.order_id = order_manager.newOrderId() > > order.user_id = member.getId() > > order.shopping_cart = loads(dumps(cart)) > > order_manager.store(order) > > cart_util.destroy(site) > > member.lastOrderID = order.order_id > > > > def createLineItem(member, cart): > > line = PayableLineItem() > > line.uid = member.getMemberType() > > line.item_id = member.getMemberType() > > line.name = member.getMemberType() > > line.description = member.getMemberType() > > line.cost = member.getPrice() > > line.product_code = member.getMemberType() > > line.quantity = 1 > > cart[line.item_id] = line > > > > def setContactInfo(order, member): > > bill_address = payment.BillingAddress() > > bill_address.bill_first_line = member.getMemberAddress() > > bill_address.bill_city = member.getCity() > > bill_address.bill_state = member.getMemberState() > > bill_address.bill_country = "US" > > bill_address.bill_postal_code = member.getZip() > > contact_info = payment.ContactInformation() > > order.contact_information = contact_info > > order.billing_address = bill_address > > order.shipping_address = payment.ShippingAddress() > > </code> > > > > I tried doing the 'authorize' transition in here but it errored. So I've > > moved it to a utility browser view that creates the PayPal button in > > login_success.pt. The code for the button is as follows: > > > > <code> > > browser/common.py: > > class SubscribeMemberView(BrowserView): > > > > def checkout_button(self): > > site = getUtility(ISiteRoot) > > mtool = getToolByName(self.context, 'portal_membership') > > member = mtool.getAuthenticatedMember() > > if ISubscribemember.providedBy(member): > > getpaidoptions = > > IGetPaidManagementPaymentOptions(self.context) > > order_manager = getUtility(IOrderManager) > > order = order_manager.get(member.getLastOrderID()) > > order.finance_workflow.fireTransition('authorize') > > processor = getAdapter(self.context, IPaymentProcessor, > > getpaidoptions.payment_processor) > > if getpaidoptions.payment_processor == 'Paypal Website > > Payments Standard': > > button = processor.cart_post_button(order) > > return button > > else: > > return '' > > </code> > > > > When the above code runs, though, I get a TypeError. My pdb session is > > here for your perusal[1]. > > > > Can anyone give any ideas as to why this doesn't work (a lot of this > > code was copied from getpaid.paypal/brower/paypalbutton.py so should > > work). > > > > Thanks, > > Tim > > > > [1] http://duffyd.pastebin.com/f779a7fca > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "getpaid-dev" group. To post to this group, send email to getpaid-dev@... To unsubscribe from this group, send email to getpaid-dev+unsubscribe@... For more options, visit this group at http://groups.google.com/group/getpaid-dev?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
Re: Issue with "authorize" transition in finance_workflowYeah!
/me curious what you're up to :) -c On Wed, May 13, 2009 at 5:28 PM, Tim Knapp <duffyd@...> wrote:
-- Cofounder and CEO ifPeople - Innovation for People www.ifpeople.net t: 678-608-3408 130 Boulevard NE, #6 Atlanta, GA 30312 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "getpaid-dev" group. To post to this group, send email to getpaid-dev@... To unsubscribe from this group, send email to getpaid-dev+unsubscribe@... For more options, visit this group at http://groups.google.com/group/getpaid-dev?hl=en -~----------~----~----~----~------~----~------~--~--- |
| Free embeddable forum powered by Nabble | Forum Help |