创建支付订单
logging.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 = 10 goods1.quantity = 1 goods_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 = 1 request = AlipayTradePayRequest( biz_model= model) response_content = Nonetry:response_content = client.execute( request) except Exception as e:print( traceback.format_exc( )) if not response_content:print( "failed execute" ) else:response = AlipayTradePayResponse( ) response.parse_response_content( response_content) print( response.body) if response.is_success( ) :print( "get response trade_no:" + response.trade_no) else:print( response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg)
回调验证签名
from alipay.aop.api.util.SignatureUtils import verify_with_rsa
alipay_public_key = '你的支付公钥'
org_message = '返回的body'
message = bytes( org_message, encoding = 'utf-8' )
sign = 'body中截取的sign'
data = verify_with_rsa( alipay_public_key, message, sign)
print( data) try:if data.get( 'trade_status' ) == 'TRADE_SUCCESS' : order_no = data.get( 'out_trade_no' ) return JSONResponse( status_code= 200 ,content = { 'code' : 1 , 'msg' : '支付成功' } ) elif data.get( 'trade_status' ) in [ 'TRADE_CLOSED' , 'TRADE_FINISHED' ] :order_no = data.get( 'out_trade_no' ) return JSONResponse( status_code= 200 ,content = { 'code' : 1 , 'msg' : '支付失败' } )