paynova的api的python客户端。对于Django框架。
django-paynova的Python项目详细描述
用于Django的Paynova Aero
Paynova Aero工作流的实现 为Django。使用Paynova APIpython 图书馆: paynova-api-python-client。
安装
安装django-paynova:
pip install django-paynova
python 2.7、3.3、3.4、pypy都支持django 1.6、1.7 支持
将django-paynova添加到INSTALLED_APPS:
INSTALLED_APPS=(...'django_paynova',...)
配置设置:
PAYNOVA_MERCHANT_ID='MERCHANT_ID'PAYNOVA_PASSWORD='PASSWORD'PAYNOVA_SECRET='SECRET'PAYNOVA_CALLBACK_URL='http://mysite.com'
对于生产:
PAYNOVA_LIVE=True
运行./manage migrate
添加URL以处理Paynova的回调:
urlpatterns=patterns('',url(r'^(?i)payments/paynova/',include('django_paynova.urls')),)
用法
使用默认参数创建订单和初始付款:
fromdjango_paynovaimportcreate_order,PaynovaExceptiontry:pp=create_order({'orderNumber':'0001','currencyCode':'EUR','totalAmount':10})# TODO: redirect to pp.urlexceptPaynovaExceptionase:# TODO: handle exception
create_order接受带Create Order parameters的字典
fromdjango.dispatchimportreceiverfromdjango_paynova.signalsimportpaynova_payment@receiver(paynova_payment)defpaynova_payment_signal(sender,status,params,**kwargs):# TODO: handle paynova payment notification
其中
- sender-PaynovaPayment模型
- status-付款状态
- ^{TT8}$-payment params 来自Paynova
高级
您还可以单独创建订单和初始化付款:
fromdjango_paynovaimportcreate_order,initialize_payment,PaynovaExceptiontry:# create orderpp=create_order({'orderNumber':'0005','currencyCode':'EUR','totalAmount':10},init_payment=False)# init payment. http://docs.paynova.com/display/API/Initialize+Paymentpp=initialize_payment({'orderId':pp.order_id})# TODO: redirect to pp.urlexceptPaynovaExceptionase:# TODO: handle exception
- create_order使用带Create Order parameters
- initialize_payment使用带Initialize Payment parameters 的字典
错误
如果paynova返回错误,PaynovaException将被引发
fromdjango-paynovaimportcreate_order,PaynovaExceptiontry:pp=create_order()exceptPaynovaExceptionase:# process exception# e.errorNumber, e.statusKey, e.statusMessage, e.errorspass
测试
首先要确定你是在virtualenv。
安装所有依赖项:
make setup
运行测试:
make test