PesaPal集成变得简单

py-pesapal的Python项目详细描述


佩萨帕尔

关于

py-pesapal是一个帮助Python开发人员轻松地将其应用程序与pesapal集成的包。在

安装

pip install py-pesapal

基本用途

有两种使用该软件包的方法,一种是专门针对烧瓶应用的。在

一般用法

^{pr2}$

在烧瓶中使用

包的基本用法与上面强调的相同,主要区别在于创建一个新的PesapalFlask实例。在

fromflaskimportFlaskfrompy_pesapalimportPesapalFlaskapp=Flask(__name__)pesapal=PesapalFlask(app,config={"PESAPAL_CONSUMER_KEY":"12345","PESAPAL_CONSUMER_SECRET":"12345","PESAPAL_CALLBACK_URL":"https://example.com/callback-url"})

高级用途(烧瓶)

在烧瓶应用中使用PesapalLask使一些高级用法成为可能,如果使用Pesapal则不可能。在

目前,这种高级用法仅限于在Jinja2模板页面中呈现payment iframe。在

importuuidfromflaskimportFlask,render_templatefrompy_pesapalimportPesapalFlaskapp=Flask(__name__)pesapal=PesapalFlask(app,config={"PESAPAL_CONSUMER_KEY":"12345","PESAPAL_CONSUMER_SECRET":"12345","PESAPAL_CALLBACK_URL":"https://example.com/callback-url"})@app.route("/payment",methods=["GET])defreturn_payment_page():transaction_data={}line_items=[]transaction_total=[]x=1while(x<=5):items_dict={}items_dict["item_id"]=xitems_dict["item_name"]="Product {}".format(x)items_dict["item_count"]=1items_dict["unit_cost"]=10*xitems_dict["subtotal"]=1*10*xtransaction_total.append(1*10*x)line_items.append(items_dict)x+=1transaction_data["line_items"]=line_itemstransaction_data["amount"]=sum(transaction_total)transaction_data["description"]="Test transaction"transaction_data["reference"]=str(uuid.uuid4())transaction_data["email"]="mail@example.com"transaction_data["currency"]="KES"returnrender_template("payment.html",data=transaction_data)
<!-- payment.html --><!DOCTYPE html><html><head><title> Fancy Page Title </title></head><body>
        {{ render_iframe(data)|safe }}
    </body></html>

配置

创建新实例时,有许多配置选项,如下所示。在

佩萨帕尔

pesapal=Pesapal(consumer_key="12345",consumer_secret="12345",testing=True,# Optionalprettyprint_xml=True,# Optionalsave_xml_file=False,# Optionalxml_output_dir=None,# Optionalparam_validation=True# Optional)
  • consumer_key(必选):PesaPal提供的消费者密钥值。在
  • consumer_secret(必选):PesaPal提供的消费者秘密值。在
  • testing(可选):默认值为True。将基础PesaPal URL设置为https://demo.pesapal.comif True或{a3}if{}。在
  • prettyprint_xml(可选):默认值为True。设置是否预打印生成的XML数据。在
  • save_xml_file(可选):默认值是False。设置是否也应将生成的XML数据保存到光盘上的文件中。在
  • xml_output_dir(可选):默认值为None。如果save_xml_file设置为True,则设置所需的输出目录。如果未设置此参数,则使用的默认目录是当前工作目录中的xml/。在
  • param_validation(可选):默认值为True。默认情况下,py pesapal需要其交易对象的电子邮件地址。这与PesaPal不同,后者要求提供电子邮件地址或电话号码之一。使用此参数可关闭py pesapal处理的验证,并默认为pesapal的本机字段验证。在

佩萨帕夫拉斯克

fromflaskimportFlaskfrompy_pesapalimportPesapalFlaskapp=Flask(__name__)pesapal=PesapalFlask(app,config={"PESAPAL_CONSUMER_KEY":"12345","PESAPAL_CONSUMER_SECRET":"12345","PESAPAL_TESTING":True,# Optional"PESAPAL_CALLBACK_URL":"https://example.com/callback-url","PESAPAL_PRETTYPRINT_XML":True,# Optional"PESAPAL_SAVE_XML":False,# Optional"PESAPAL_OUTPUT_DIR":None,# Optional"PESAPAL_PARAM_VALIDATION":True# Optional})

或者,配置值可以与应用程序实例相关联。在

fromflaskimportFlaskfrompy_pesapalimportPesapalFlaskapp=Flask(__name__)app.config["PESAPAL_CONSUMER_KEY"]="12345",app.config["PESAPAL_CONSUMER_SECRET"]="12345",app.config["PESAPAL_TESTING"]=True,# Optionalapp.config["PESAPAL_CALLBACK_URL"]="https://example.com/callback-url",app.config["PESAPAL_PRETTYPRINT_XML"]=True,# Optionalapp.config["PESAPAL_SAVE_XML"]=False,# Optionalapp.config["PESAPAL_OUTPUT_DIR"]=None,# Optionalapp.config["PESAPAL_PARAM_VALIDATION"]=True# Optionalpesapal=PesapalFlask(app)

实用工具

py-pesapal包公开了各种实用程序,如果开发人员希望对与pesapal集成的过程有更多的控制。在

frompy_pesapal.utilsimportgenerate_oauth_url# BUILD OAUTH1 URLurl=generate_oauth_url(consumer_key="12345",consumer_secret="12345",url="https://demo.pesapal.com",request_params={"oauth_callback":"https://example.com/callback-url"})
  • consumer_key(必需):使用者的密钥值。在
  • consumer_secret(必需):消费者的机密值。在
  • url(必需):这是附加各种参数的基URL。在
  • request_params(必需):附加到基URL的参数。在
frompy_pesapal.utilsimportvalidate_params# VALIDATE PARAMSrequired_params={"email":True,"phone_number":True,"first_name":False}params_to_be_validated={"email":"mail@example.com","phone_number":"phone-number"}# Raises a KeyError if one or more params are missingvalidate_params(params=params_to_be_validated,required_params=required_params)
  • params(必需):这是一个想要验证的参数字典。在
  • required_params(必选):这是一个字典,包含参数的名称和一个表示是否需要的布尔值。在
importuuidfrompy_pesapalimportgenerate_xmltransaction_data={}transaction_data["amount"]=120transaction_data["description"]="Test transaction"transaction_data["reference"]=str(uuid.uuid4())transaction_data["email"]="mail@example.com"transaction_data["currency"]="KES"# GENERATE XMLxml=generate_xml(transaction_data=transaction_data,prettyprint=True,generate_xml_file=False,xml_output_directory=None)
  • transaction_data(必选):要过账的交易数据
  • prettyprint(可选):设置是否预打印生成的XML。在
  • generate_xml_file(可选):设置是否将XML数据保存到光盘上的文件中。在
  • xml_output_directory(可选):如果generate_xml_file设置为True,则设置XML文件的输出目录。默认目录是当前工作目录中的xml/。在

许可证

MIT

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

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java