Django的SaferPay支付集成。

django-saferpa的Python项目详细描述


Django SaferPay

saferpay集成用于django

此软件包使用saferpay json api和saferpay支付页面接口。 这不是六个支付服务的官方套餐。

有关更多信息,请参见官方的saferpay json api。 再看看test.saferpay.com

django设置

此django包用于与django oscar的cunconjunction。它可以和其他Django商店系统一起工作, 没有什么和奥斯卡有关。

它与dango 1.11一起使用,但应该/可以与django 2.0、2.1一起使用。

第一次更新settings.py

fromdjango.urlsimportreverse_lazyfromdjango.utils.translationimportugettext_lazyas_INSTALLED_APPS=[...'saferpay',]...SAFERPAY_APIURL='https://test.saferpay.com/api'SAFERPAY_USERNAME='API_XXX'SAFERPAY_PASSWORD='XXX'SAFERPAY_CUSTOMERID='xxxxxx'# a numberSAFERPAY_TERMINALID='xxxxxx'# a numberSAFERPAY_SUCCESS_CAPTURE_URL=reverse_lazy('yourshop:payment-capture')# your callback after getting the moneySAFERPAY_SUCCESS_URL=reverse_lazy('yourshop:thank-you')# your callback after a successfull orderSAFERPAY_FAIL_URL=reverse_lazy('yourshop:payment-failed')# your callback after a failed paymentSAFERPAY_ORDER_TEXT_NR=_('Payment for the company XXX, Order nr. %s.')SAFERPAY_FORCE_LIABILITYSHIFT_ACTIVE=False# default: FalseSAFERPAY_DO_NOTIFY=True# default: False...

你需要从你的商店应用程序中提供三个URL来为SaferPay网关提供回调。

  • SAFERPAY_SUCCESS_CAPTURE_URL-成功捕获金额的saferpay回调 付款页初始化和付款页断言之后
  • SAFERPAY_SUCCESS_URL-一切顺利,saferpay回拨购物成功网址
  • SAFERPAY_FAIL_URL-出了问题,saferpay回调到商店失败url

在您的项目中urls.py

...url(r'',include('saferpay.urls')),...

创建数据库模型

./manage.pymigrate

Django Oscar设置

如果你用django奥斯卡就得django-oscar-saferpay 以处理安装过程并查看示例使用实现。

样本使用

您可以使用此代码作为示例。你需要把它整合到 你自己在商店系统中的看法。

  1. 初始化服务
fromsaferpay.gatewayimportSaferpayServicefromsaferpayimportexecptionsassp_execptionsdefbilling_address_for_saferpay(billing_address):"""Transform you shop billing address to     a format that saferpay uses.    Your billing_address object can be totaly differnt,     adjust it to your needs.    """data={}data['FirstName']=billing_address.first_namedata['LastName']=billing_address.last_namedata['Street']=billing_address.line1ifbilling_address.line2:data['Street2']=billing_address.line2data['Zip']=billing_address.postcodedata['City']=billing_address.cityreturndatadefpayment_init(request,order):"""    Intizialize a new SaferpayService instance, with your    order data. Adjust the the order calls for your shop.    The init payload is created and after success you get    redirected to the saferpay PayementPage.    """saferpay_service=SaferpayService(order_id=order.number,amount=order.total.incl_tax,currency=order.total.currency,language_code=language_code)payload=saferpay_service.payload_init(billing_address=billing_address_data)try:token=saferpay_service.paymentpage_init(payload)request.session['saferpay_token']=tokenraiseRedirectRequired(saferpay_service.paymentpage_redirect().url)exceptsp_execptions.GatewayErrorase:# do your rollback in case of payment failure returnredirect(reverse_lazy('yourshop:payment-failed'))
  1. 断言并获取资金并下订单
fromsaferpay.gatewayimportSaferpayServicefromsaferpayimportexecptionsassp_execptionsdefpayment_capture(request):token=request.session['saferpay_token']saferpay_service=SaferpayService.init_from_transaction(token=token)try:status=saferpay_service.paymentpage_assert()except(sp_execptions.GatewayError,sp_execptions.TransactionDeclined,sp_execptions.UnableToTakePayment,sp_execptions.PaymentError)ase:# do your rollback in case of payment failure returnredirect(reverse_lazy('yourshop:payment-failed'))ifstatus=='CAPTURED':# register the payment in you shoplogger.info("Order #%s: payment successful, placing order",saferpay_service.order_id)try:# place the orderexceptUnableToPlaceOrderase:# go back to preview

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
tomcat Java条带错误   java OPENTSDB fsck修复程序不更正重复点   java JavaFX在控制器内切换自身的可见性   java maven surefire插件未并行执行运行程序   读取导致Freemarker模板引擎中TemplateException的Java对象   无法使Java库与我的Android应用程序一起工作   安卓 java。lang.IllegalStateException游标   使用Java检索XML文件中的XSL URL和名称   java如何从文本文件集合中提取特定值   电子邮件java mail gmail   java为什么finalize()只被垃圾收集器调用一次?   java方法findViewById(int)对于Json类型是未定义的。蛇形   java在安卓中尝试从brother打印机打印位图时遇到以下异常   java在颤振中支持Kotlin的优势   java从后面编写文本   java制作列表。第一个列表可以有相同的数字,第二个将是价格,尝试制作第三个列表,如果它们是相同的数字,它将添加价格