用于与付款人支付api交互的python包(http://www.payer.se)。
python-payer-api的Python项目详细描述
用于与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()
付款流程
付款流程的主要流程如下:
使用代理ID、密钥1和 键2付款人提供的值。可选设置test_mode和 debug_mode并添加payment_methods的列表。
创建一个PayerProcessingControl对象并将其添加到您的api中 使用set_processing_control()方法的对象。这个对象 包含你的网站必须提供的四个URL它们是:
success_redirect_url:一个“谢谢”url,显示在 已完成采购 authorize_notification_url:回调url,如下所述, 当命令被授权时调用。 settle_notification_url:回调url,如下所述,调用 当订单付款时。 redirect_back_to_shop_url:一个“取消”或“返回商店”的url。
创建一个PayerOrder对象(包括PayerBuyerDetails和 PayerOrderItemobjects)并使用 set_order()方法。
现在可以调用api.get_post_data()获取查询的dict 付款人期望的参数。添加为<input type="hidden"> 具有方法POST和操作的<form>元素中的元素 api.get_post_url()并让用户提交表单(即 发生在前端)。
付款人将分析您的订单,一旦付款完成 付款人将对您的回调url执行get请求- authorize_notification_urlurl,取决于付款方式 (direct/invoice)调用settle_notification_urlurl。你会 希望实现一个视图或url处理程序来监听这些url, 为此,您可以调用validate_callback_ip()和 validate_callback_url()PayerPostAPI上的方法几个 查询参数将附加到回调url,从中 您可以提取订单ID、所选付款方式、付款ID 查询参数的完整列表如下:
order_id,payer_callback_type,payer_testmode, payer_payment_type,payer_added_fee, payer_merchant_reference_id,payer_payment_id, payread_payment_id。
根据请求的有效性,您的视图应该返回 使用text/plain内容类型的TRUE或FALSE。
一旦付款人执行了验证并结算验证,它将 重定向用户success_redirect_urlurl。