获得付费服务功能
getpaid.ups的Python项目详细描述
此套餐包含用于GetPaid的UPS。
更改
0.4(未发布)
0.3(2008-08-29)
- 向项目根目录添加了构建文件和常规文本文档。
详细文档
获得已付UPS
此模块为getpaid和ups提供集成包 (www.ups.com)。
使用量
首先,我们需要创建一个ups额定值实用程序的实例并配置 它与我们的ups帐户信息。为了在这里运行单元测试 将ups_用户名、ups_密码、ups_访问密钥的值打包到 在shell/process环境中设置。
还要注意rates.py当前将fakeresponse()返回给这些请求。 要从服务器获得真正的响应,只需将该行(66)注释掉。
>>> from getpaid.ups import interfaces >>> from getpaid.ups.rates import UPSRateService >>> ups = UPSRateService() >>> ups.username = UPS_USERNAME >>> ups.password = UPS_PASSWORD >>> ups.access_key = UPS_ACCESS_KEY >>> ups.pickup_type = '01'
我们需要明确指定我们允许商店使用哪些ups服务。
>>> ups.services = interfaces.UPS_SERVICES.by_value.keys()
原点信息
我们还需要配置商店以设置 要源自的包。为了简洁起见,我们已经配置了存储 带有旧金山地址的测试设置中的设置。
创建发货订单
让我们创建一个订单,其中包含一些我们想发货的项目。
>>> from getpaid.core import order, item, cart >>> myorder = order.Order() >>> myorder.shopping_cart = mycart = cart.ShoppingCart() >>> mycart <getpaid.core.cart.ShoppingCart object at ...>>>> line_item = item.ShippableLineItem() >>> line_item.item_id = "sku-code-1" >>> line_item.quantity = 2 >>> line_item.weight = 5.5 >>> mycart[ line_item.item_id ] = line_item
目的地信息
我们需要一些额外的信息才能成功订货 处理它,首先是一些联系信息:
>>> from getpaid.core import payment >>> user_contact = payment.ContactInformation() >>> user_contact.name = "John Smith" >>> user_contact.email = "js@example.org" >>> user_contact.phone_number = '7033291513' >>> myorder.contact_information = user_contact
当然还有发货地点:
>>> ship_address = payment.ShippingAddress() >>> ship_address.ship_same_billing = False >>> ship_address.ship_first_line = '2702 Occidental Dr' >>> ship_address.ship_city = 'Vienna' >>> ship_address.ship_state = "VA" >>> ship_address.ship_country = "US" >>> ship_address.ship_postal_code = '22180' >>> myorder.shipping_address = ship_address
获取运输选项
- 现在我们可以查询ups以了解各种服务、交付窗口和
UPS为中转提供的价格。
>>> results = ups.getRates( myorder ) >>> results.shipments.sort( lambda x,y:cmp(x.cost,y.cost) ) >>> methods = results.shipments >>> len(methods) 6
价格会随着时间的推移而变化,为了测试的目的,我们分类比较 按成本(从低到高)划分的预期服务类型
>>> methods[0].service u'UPS Ground' >>> methods[1].service u'UPS Three Day Select' >>> methods[2].service u'UPS 2nd Day Air' >>> methods[3].service u'UPS Next Day Air Saver'
故障模式
如果商店发货信息设置不正确,我们会得到一个类型 请求查看存储设置时出错。
>>> from zope.component import getUtility >>> from getpaid.core.interfaces import IStoreSettings >>> settings = getUtility( IStoreSettings ) >>> settings.contact_state = "" >>> ups.getRates( myorder ) Traceback (most recent call last): ... TypeError: Invalid Store Address Settings in Store Admin
TOdo:测试
结果对象上的可用状态