用于与付款人支付api交互的python包(http://www.payer.se)。

python-payer-api的Python项目详细描述


Build StatusCoverage StatusLatest Version

用于与Payer交互的Python包 支付API

此模块的作用域基本上是将数据序列化为xml。 准备发送给付款人。给定订单详细信息,帐单详细信息 并回调url它将构建一个xml树,根据 付款人规范并返回编码数据和所需的 dict中的键值对。付款人希望post请求中包含此数据 使用application/x-www-form-urlencoded内容类型。

生成HTML,提供所需的任何类型的请求处理程序或视图 但是,对于一个成功的支付程序,不在这一范围之内 模块。这样的实现被鼓励实现为 独立模块,与框架、webshop模块等相关。 你可能在用。其中一个例子是 django-shop-payer-backend 最初为其开发的python payer api

安装

pip install python-payer-api

基本用法

frompayer_apiimportPAYMENT_METHOD_CARD,PAYMENT_METHOD_BANK,PAYMENT_METHOD_PHONE,PAYMENT_METHOD_INVOICEfrompayer_api.postapiimportPayerPostAPIfrompayer_api.orderimport(PayerProcessingControl,PayerBuyerDetails,PayerOrderItem,PayerOrder,)api=PayerPostAPI(agent_id="AGENT_ID",key_1="6866ef97a972ba3a2c6ff8bb2812981054770162",key_2="1388ac756f07b0dda2961436ba8596c7b7995e94",payment_methods=[PAYMENT_METHOD_CARD,PAYMENT_METHOD_BANK,PAYMENT_METHOD_PHONE,PAYMENT_METHOD_INVOICE])processing_control=PayerProcessingControl(success_redirect_url="http://localhost/webshop/thankyou/",authorize_notification_url="http://localhost/webshop/auth/",settle_notification_url="http://localhost/webshop/settle/",redirect_back_to_shop_url="http://localhost/webshop/",)order=PayerOrder(order_id="123456",buyer_details=PayerBuyerDetails(first_name="John",last_name="Doe",address_line_1="1234 Main Street",postal_code="12345",city="Anywhere",phone_mobile="012345678",email="john.doe@host.com",),order_items=[PayerOrderItem(description='A product',price_including_vat=123.50,vat_percentage=25,quantity=4,),PayerOrderItem(description='Another product',price_including_vat=123.0,vat_percentage=12.5,quantity=2,),],info_lines=["Shipping with 5 work days","Additional line of order info",])api.set_order(order)api.set_processing_control(processing_control)printapi.get_post_data()

付款流程

付款流程的主要流程如下:

  1. 使用代理ID、密钥1和 键2付款人提供的值。可选设置test_modedebug_mode并添加payment_methods的列表。

  2. 创建一个PayerProcessingControl对象并将其添加到您的api中 使用set_processing_control()方法的对象。这个对象 包含你的网站必须提供的四个URL它们是:

    success_redirect_url:一个“谢谢”url,显示在 已完成采购 authorize_notification_url:回调url,如下所述, 当命令被授权时调用。 settle_notification_url:回调url,如下所述,调用 当订单付款时。 redirect_back_to_shop_url:一个“取消”或“返回商店”的url。

  3. 创建一个PayerOrder对象(包括PayerBuyerDetailsPayerOrderItemobjects)并使用 set_order()方法。

  4. 现在可以调用api.get_post_data()获取查询的dict 付款人期望的参数。添加为<input type="hidden"> 具有方法POST和操作的<form>元素中的元素 api.get_post_url()并让用户提交表单(即 发生在前端)。

  5. 付款人将分析您的订单,一旦付款完成 付款人将对您的回调url执行get请求- authorize_notification_urlurl,取决于付款方式 (direct/invoice)调用settle_notification_urlurl。你会 希望实现一个视图或url处理程序来监听这些url, 为此,您可以调用validate_callback_ip()validate_callback_url()PayerPostAPI上的方法几个 查询参数将附加到回调url,从中 您可以提取订单ID、所选付款方式、付款ID 查询参数的完整列表如下:

    order_idpayer_callback_typepayer_testmodepayer_payment_typepayer_added_feepayer_merchant_reference_idpayer_payment_idpayread_payment_id

    根据请求的有效性,您的视图应该返回 使用text/plain内容类型的TRUEFALSE

  6. 一旦付款人执行了验证并结算验证,它将 重定向用户success_redirect_urlurl。

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

推荐PyPI第三方库


热门话题
java日期格式的月和日的固定长度?   无法将java ArrayList<String>转换为字符串。   java当我使用log4j 1.2.15时,编译时出现错误;当更改为1.2.16时,一切正常   java如何使用ArgumentMatchers将任何队列告知Mockito?   如何解决“java”。Java电子邮件API中的lang.ExceptionInInitializerError   java是实例化对象名并设置其值的通用方法   java在多线程环境中,如果一个线程崩溃,如何关闭JVM?   java WebDriverManager在selenium中获取不正确版本的驱动程序   如果JAVA中后减量的优先级高于前增量,那么为什么下面的代码输出为22.0而不是20.0。?   在hibernate中找不到java属性   当我用java运行调度程序时,什么都没有发生   jackson如何在java中从数据库中检索json对象   java安卓:如何在自定义适配器中设置侦听器并获取imagebutton单击的位置   java MySQLIntegrityConstraintViolationException:列“问题id”不能为空错误   JavaSpring自定义注销过滤器在注销前执行一些操作?   java如何返回常量集合   java使用subselect进行一对多分页   java二进制搜索基础。陷入无限循环