很多小伙伴想知道python怎么接入支付宝?那么今天小编就通过这篇文章来给大家分享下如何实现python接入支付宝功能的。感兴趣的小伙伴可以耐心阅读一下这篇文章。
第一步,目前我们需要使用国内源,安装依赖包:pip install -i (https://pypi.douban.com/simple alipay-sdk-python)
第二步,如果我们安装第一步中出现error: Microsoft Visual C++ 14.0 is required.让安装c++,我们安装c++然后选择默认安装即可。
第三步,我们再次安装alipay-sdk-python,会出现报错关键词missing ,按以下操作即可解决。
新建系统环境变量:VCINSTALLDIR 变量值:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
点进来,下载Download Latest
把压缩包放到python安装目录的Scripts目录中,解压缩
cmd进入解压缩的目录中,输入命令:set CL=/FI"%VCINSTALLDIR%\\INCLUDE\\stdint.h" %CL%
输入命令:python setup.py install
第四步,然后看文尾代码实现的线下二维码支付,有其他需求可对照api自行改动
第五步,设置api
代码如下所示:
# cython: language_level=3 import os import logging import json import time import qrcode import win32con import win32api from alipay.aop.api.AlipayClientConfig import AlipayClientConfig from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient from alipay.aop.api.domain.AlipayTradeCreateModel import AlipayTradeCreateModel from alipay.aop.api.request.AlipayTradeCreateRequest import AlipayTradeCreateRequest from alipay.aop.api.response.AlipayTradeCreateResponse import AlipayTradeCreateResponse from alipay.aop.api.request.AlipayTradePrecreateRequest import AlipayTradePrecreateRequest from alipay.aop.api.request.AlipayTradeQueryRequest import AlipayTradeQueryRequest from alipay.aop.api.response.AlipayTradeQueryResponse import AlipayTradeQueryResponse from alipay.aop.api.domain.AlipayTradeQueryModel import AlipayTradeQueryModel '''app私钥和支付宝生成的公钥''' app_private_key = 'app私钥' alipay_public_key = '支付宝网站生成的公钥' logging.basicConfig( level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s', filemode='a', ) logger = logging.getLogger('') def show_qrcode(code): ''' 生成二维码 :param code: :return: ''' img = qrcode.make(data=code) img.save("A.jpg") img.show() def get_time_out_trade_no(): ''' :return: 构造唯一订单号 ''' return str(int(time.time()) + 你的appid) def pay(): ''' 支付 :return: ''' # 实例化客户端 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do' alipay_client_config.app_id = '你的appid' alipay_client_config.app_private_key = app_private_key alipay_client_config.alipay_public_key = alipay_public_key # client = DefaultAlipayClient(alipay_client_config, logger) client = DefaultAlipayClient(alipay_client_config) # 构造请求参数对象 model = AlipayTradeCreateModel() model.out_trade_no = get_time_out_trade_no() model.total_amount = "价格string" model.subject = "标题" request = AlipayTradePrecreateRequest(biz_model=model) # 执行API调用 try: response_content = client.execute(request) except Exception as e: print('error', e) else: # 解析响应结果 response = AlipayTradeCreateResponse() response.parse_response_content(response_content) # 响应成功的业务处理 if response.is_success(): # 如果业务成功,可以通过response属性获取需要的值 # print(response.body) # print(json.loads(response.body)["qr_code"]) show_qrcode(json.loads(response.body)["qr_code"]) # 响应失败的业务处理 else: # 如果业务失败,可以从错误码中可以得知错误情况,具体错误码信息可以查看接口文档 print('error code') os.system('pause') def check_order(order): ''' 订单校验 order: 订单号 :return: ''' # 构造请求 alipay_client_config = AlipayClientConfig() alipay_client_config.app_id = '你的appid' alipay_client_config.method = 'alipay.trade.query' alipay_client_config.charset = 'utf-8' alipay_client_config.app_private_key = app_private_key alipay_client_config.alipay_public_key = alipay_public_key client = DefaultAlipayClient(alipay_client_config) request = AlipayTradeQueryRequest() request.biz_content = {"trade_no": order} response_content = client.execute(request) response = AlipayTradeQueryResponse() response.parse_response_content(response_content) try: # print(response.send_pay_date) if response.code == "10000": # 将购买时间转换为时间戳,取当前时间做对比,如果超过十分钟pass, stamp_array = time.strptime(response.send_pay_date, '%Y-%m-%d %H:%M:%S') stamp = int(time.mktime(stamp_array)) # 转换为时间戳 # print('本地时间转换成时间戳:', stamp) hour = stamp + 360 if hour > time.time(): print('ok!') else: print('fail!') if response.code == "40004": print("order error1!") os.system('pause') else: print("order error2!") os.system('pause') except Exception as e: print('error, check_order') os.system('pause')
以上就是小编给大家带来的python接入支付宝的方法了,希望大家通过阅读小编的文章之后能够有所收获!如果大家觉得小编的文章不错的话,可以多多分享给有需要的人。