a copy of the official aliyun sdk for python.

alipay-python的Python项目详细描述


python的官方支付宝sdk。

方法sdk。

示例

#!/usr/bin/env python# -*- coding: utf-8 -*-importloggingimporttracebackfromalipay.aop.api.AlipayClientConfigimportAlipayClientConfigfromalipay.aop.api.DefaultAlipayClientimportDefaultAlipayClientfromalipay.aop.api.FileItemimportFileItemfromalipay.aop.api.domain.AlipayTradeAppPayModelimportAlipayTradeAppPayModelfromalipay.aop.api.domain.AlipayTradePagePayModelimportAlipayTradePagePayModelfromalipay.aop.api.domain.AlipayTradePayModelimportAlipayTradePayModelfromalipay.aop.api.domain.GoodsDetailimportGoodsDetailfromalipay.aop.api.domain.SettleDetailInfoimportSettleDetailInfofromalipay.aop.api.domain.SettleInfoimportSettleInfofromalipay.aop.api.domain.SubMerchantimportSubMerchantfromalipay.aop.api.request.AlipayOfflineMaterialImageUploadRequestimportAlipayOfflineMaterialImageUploadRequestfromalipay.aop.api.request.AlipayTradeAppPayRequestimportAlipayTradeAppPayRequestfromalipay.aop.api.request.AlipayTradePagePayRequestimportAlipayTradePagePayRequestfromalipay.aop.api.request.AlipayTradePayRequestimportAlipayTradePayRequestfromalipay.aop.api.response.AlipayOfflineMaterialImageUploadResponseimportAlipayOfflineMaterialImageUploadResponsefromalipay.aop.api.response.AlipayTradePayResponseimportAlipayTradePayResponselogging.basicConfig(level=logging.INFO,format='%(asctime)s%(levelname)s%(message)s',filemode='a',)logger=logging.getLogger('')if__name__=='__main__':"""
    设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
    """alipay_client_config=AlipayClientConfig()alipay_client_config.server_url='https://openapi.alipay.com/gateway.do'alipay_client_config.app_id='[your app_id]'alipay_client_config.app_private_key='[your app private key]'alipay_client_config.alipay_public_key='[alipay public key]'"""
    得到客户端对象。
    注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
    logger参数用于打印日志,不传则不打印,建议传递。
    """client=DefaultAlipayClient(alipay_client_config=alipay_client_config,logger=logger)"""
    系统接口示例:alipay.trade.pay
    """# 对照接口文档,构造请求对象model=AlipayTradePayModel()model.auth_code="282877775259787048"model.body="Iphone6 16G"goods_list=list()goods1=GoodsDetail()goods1.goods_id="apple-01"goods1.goods_name="ipad"goods1.price=10goods1.quantity=1goods_list.append(goods1)model.goods_detail=goods_listmodel.operator_id="yx_001"model.out_trade_no="20180510AB014"model.product_code="FACE_TO_FACE_PAYMENT"model.scene="bar_code"model.store_id=""model.subject="huabeitest"model.timeout_express="90m"model.total_amount=1request=AlipayTradePayRequest(biz_model=model)# 如果有auth_token、app_auth_token等其他公共参数,放在udf_params中# udf_params = dict()# from alipay.aop.api.constant.ParamConstants import *# udf_params[P_APP_AUTH_TOKEN] = "xxxxxxx"# request.udf_params = udf_params# 执行请求,执行过程中如果发生异常,会抛出,请打印异常栈response_content=Nonetry:response_content=client.execute(request)exceptExceptionase:print(traceback.format_exc())ifnotresponse_content:print("failed execute")else:response=AlipayTradePayResponse()# 解析响应结果response.parse_response_content(response_content)print(response.body)ifresponse.is_success():# 如果业务成功,则通过respnse属性获取需要的值print("get response trade_no:"+response.trade_no)else:# 如果业务失败,则从错误码中可以得知错误情况,具体错误码信息可以查看接口文档print(response.code+","+response.msg+","+response.sub_code+","+response.sub_msg)"""
    带文件的系统接口示例:alipay.offline.material.image.upload
    """# 如果没有找到对应Model类,则直接使用Request类,属性在Request类中request=AlipayOfflineMaterialImageUploadRequest()request.image_name="我的店"request.image_type="jpg"# 设置文件参数f=open("/Users/foo/Downloads/IMG.jpg","rb")request.image_content=FileItem(file_name="IMG.jpg",file_content=f.read())f.close()response_content=Nonetry:response_content=client.execute(request)exceptExceptionase:print(traceback.format_exc())ifnotresponse_content:print("failed execute")else:response=AlipayOfflineMaterialImageUploadResponse()response.parse_response_content(response_content)ifresponse.is_success():print("get response image_url:"+response.image_url)else:print(response.code+","+response.msg+","+response.sub_code+","+response.sub_msg)"""
    页面接口示例:alipay.trade.page.pay
    """# 对照接口文档,构造请求对象model=AlipayTradePagePayModel()model.out_trade_no="pay201805020000226"model.total_amount=50model.subject="测试"model.body="支付宝测试"model.product_code="FAST_INSTANT_TRADE_PAY"settle_detail_info=SettleDetailInfo()settle_detail_info.amount=50settle_detail_info.trans_in_type="userId"settle_detail_info.trans_in="2088302300165604"settle_detail_infos=list()settle_detail_infos.append(settle_detail_info)settle_info=SettleInfo()settle_info.settle_detail_infos=settle_detail_infosmodel.settle_info=settle_infosub_merchant=SubMerchant()sub_merchant.merchant_id="2088301300153242"model.sub_merchant=sub_merchantrequest=AlipayTradePagePayRequest(biz_model=model)# 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段response=client.page_execute(request,http_method="GET")print("alipay.trade.page.pay response:"+response)"""
    构造唤起支付宝客户端支付时传递的请求串示例:alipay.trade.app.pay
    """model=AlipayTradeAppPayModel()model.timeout_express="90m"model.total_amount="9.00"model.seller_id="2088301194649043"model.product_code="QUICK_MSECURITY_PAY"model.body="Iphone6 16G"model.subject="iphone"model.out_trade_no="201800000001201"request=AlipayTradeAppPayRequest(biz_model=model)response=client.sdk_execute(request)print("alipay.trade.app.pay response:"+response)

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

推荐PyPI第三方库


热门话题
java找不到适合makeText的方法   如何将java数组转换为prolog列表并使用它进行jpl查询?   安卓中显示ArrayList的java子类ArrayAdapter   Java8GroupingBy到包含列表的映射中   java Json字符串,带有要映射的嵌套对象<string,string>   java Hibernate中的包和列表有什么区别?   java Spring REST模板指定Jackson视图   java如何在继承的类中返回字符串?   调试Java ArrayQue删除和轮询方法错误   带有NetBeans 7.4的java JSP自定义标记Struts2   java无法从加载jar文件。蝙蝠锉   无法解析java image_项“未显示在下拉列表中且无法键入”   jdoDetachedState设置为null的java查询实体   scala使用Cypher CREATE命令和属性映射,来自Java   minecraft中的java/me并没有被我编写的插件禁用   java Cucumber框架设置   java以奇怪的方式遍历LinkedList?   java JPA将布尔字段配置为保留为整数   月球着陆器中的java Android垃圾收集