def zfb_callback_login(request): app_auto_code = request.GET.get("app_auto_code") model = AlipayOpenAuthTokenAppModel() model.grant_type = "authorization_code" model.code = app_auto_code client = DefaultAlipayClient( alipay_client_config=zfb_conf.alipay_client_config) request = AlipayOpenAuthTokenAppRequest(biz_model=model) response_content = client.execute(request) response = AlipayOpenAuthTokenAppResponse() response.parse_response_content(response_content) app_auto_token = response.app_auth_token expires = response.expires_in app_refresh_token = response.app_refresh_token re_expires = response.re_expires_in alipay_user_id = response.user_id return HttpResponse(response.body)
def get_alipay_oauth_token_response(app_id, app_private_key, alipay_public_key, auth_code=''): ''' 初始化一个支付宝请求client ''' alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = constants.SERVER_URL alipay_client_config.app_id = app_id alipay_client_config.app_private_key = app_private_key alipay_client_config.alipay_public_key = alipay_public_key alipay_client_config.format = 'json' alipay_client_config.charset = 'utf-8' alipay_client_config.sign_type = 'RSA2' client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipaySystemOauthTokenModel() request = AlipaySystemOauthTokenRequest(biz_model=model) request.code = auth_code request.grant_type = 'authorization_code' response_content = None try: response_content = client.execute(request) except AopException: print(traceback.format_exc()) if not response_content: raise ValidationError({'app_id|app_private_key|alipay_public_key': ['all should be correct']}) res = AlipaySystemOauthTokenResponse() res.parse_response_content(response_content) return res
def alipay_query(cls, out_trade_no, trade_no, receipt, trade_type): '''alipay query''' try: config_dict = { VIPOrder.PAY_TYPE_BY_ALIPAY_APP: settings.ALIPAY_APP_INFO, VIPOrder.PAY_TYPE_BY_ALIPAY: settings.ALIPAY_APP_INFO, } config = config_dict[trade_type] alipay_client_config = AlipayClientConfig() alipay_client_config.app_id = smart_str(config['basic_info']['APP_ID']) alipay_client_config.sign_type = smart_str(config['other_info']['SIGN_TYPE']) with open(config['basic_info']['APP_PRIVATE_KEY'], 'r') as fp: alipay_client_config.app_private_key = fp.read() client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradeQueryModel() model.out_trade_no = smart_str(out_trade_no) if trade_no: model.trade_no = smart_str(trade_no) request = AlipayTradeQueryRequest(biz_model=model) request_params = client.sdk_execute(request) resp = requests.get('{}?{}'.format(SERVER_URL, request_params)).json() log.info('********** alipay query result ***********') log.info(resp) query_resp = resp['alipay_trade_query_response'] return { 'trade_status': query_resp.get('trade_status') == 'TRADE_SUCCESS', 'total_fee': float(query_resp.get('total_amount', 0)), 'refno': query_resp.get('trade_no', ''), } except Exception, e: log.exception(e)
def get(self, request): order_id = request.GET.get('order_id') money = request.GET.get('money') # 业务逻辑处理 try: # 调用支付宝流程 alipay_client_config = AlipayClientConfig() # 创建配置对象 alipay_client_config.server_url = settings.ALIPAY_URL # 网关 alipay_client_config.app_id = settings.ALIPAY_APPID # APPID alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY # 应用私钥 client = DefaultAlipayClient( alipay_client_config=alipay_client_config) # 使用配置创建客户端 model = AlipayTradePagePayModel() # 创建网站支付模型 model.out_trade_no = order_id # 商户订单号码 model.total_amount = str(1) # 支付总额 model.subject = '订单标题' # 订单标题 model.body = '订单描述' # 订单描述 model.product_code = 'FAST_INSTANT_TRADE_PAY' # 与支付宝签约的产品码名称,目前只支持这一种。 model.timeout_express = '30m' # 订单过期关闭时长(分钟) pay_request = AlipayTradePagePayRequest( biz_model=model) # 通过模型创建请求对象 pay_request.notify_url = settings.ALIPAY_NOTIFY_URL # 设置回调通知地址(POST) # pay_request.notify_url = None # 设置回调通知地址(POST) pay_request.return_url = settings.ALIPAY_RETURN_URL # 设置回调通知地址(GET) # pay_request.return_url = None # 设置回调通知地址(GET) response = client.page_execute(pay_request, http_method='GET') # 获取支付链接 pay_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') return HttpResponseRedirect(response) # 重定向到支付宝支付页面 except Exception as e: print(e) return JsonResponse({'code': 201, 'message': '支付失败,请重新支付'})
def post(self, request, *args, **kwargs): try: package_id = request.POST.get('package_id') order = VIPOrder.create_order(request.user, int(package_id)) if order: log.info('****** order id: {} ******'.format(order.id)) order.pay_type = VIPOrder.PAY_TYPE_BY_ALIPAY_APP out_trade_no = create_trade_id(order.id) order.outtradeno = out_trade_no order.save() result = {'order_id': order.id} alipay_client_config = AlipayClientConfig() alipay_client_config.app_id = smart_str(settings.ALIPAY_APP_INFO['basic_info']['APP_ID']) alipay_client_config.sign_type = smart_str(settings.ALIPAY_APP_INFO['other_info']['SIGN_TYPE']) with open(settings.ALIPAY_APP_INFO['basic_info']['APP_PRIVATE_KEY'], 'r') as fp: alipay_client_config.app_private_key = fp.read() client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradeAppPayModel() model.total_amount = smart_str(str_to_specify_digits(str(order.price))) model.product_code = smart_str("QUICK_MSECURITY_PAY") model.body = smart_str(order.name) model.subject = smart_str(order.name) model.out_trade_no = smart_str(out_trade_no) model.passback_params = smart_str(settings.LMS_ROOT_URL + reverse("vip_purchase")) request = AlipayTradeAppPayRequest(biz_model=model) request.notify_url = smart_str(settings.ALIPAY_APP_INFO['other_info']['NOTIFY_URL']) result['alipay_request'] = client.sdk_execute(request) return Response(data=result) except Exception, e: log.exception(e)
def get_pay_url(cls, order_id, total_amount): # 获取内容 with open(ALIPAY_KEY_PATH) as f: alipay_public_key = f.read() with open(APP_KEY_PRIVATE_PATH) as f: app_private_key = f.read() # 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥; config = AlipayClientConfig() config.server_url = settings.SERVER_URL config.app_id = settings.APP_ID config.app_private_key = app_private_key config.alipay_public_key = alipay_public_key # 得到 client = DefaultAlipayClient(alipay_client_config=config) model = AlipayTradePagePayModel() model.out_trade_no = order_id model.total_amount = str(total_amount) model.subject = "天天生鲜-%s" % order_id model.product_code = "FAST_INSTANT_TRADE_PAY" model.body = '天天生鲜' request = AlipayTradePagePayRequest(biz_model=model) # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url response_url = client.page_execute(request, http_method="GET") return response_url
def post(self, request): '''订单支付''' # 判断用户登录 user = request.user if not user.is_authenticated: return JsonResponse({'res': 0, 'errmsg': '用户未登陆'}) # 接收参数 order_id = request.POST.get('order_id') # 校验参数 if not order_id: return JsonResponse({'res': 1, 'errmsg': '参数不完整'}) try: order = OrderInfo.objects.get(order_id=order_id, user=user, pay_method=3, order_status=1) except OrderInfo.DoesNotExist: return JsonResponse({'res': 2, 'errmsg': '无效的订单id'}) """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2016100100641374' app_private_key = '' with open(os.path.join(settings.BASE_DIR, 'apps/order/app_private_key.pem'), 'r') as f: for line in f: app_private_key += line alipay_client_config.app_private_key = app_private_key alipay_public_key = '' with open(os.path.join(settings.BASE_DIR, 'apps/order/alipay_public_key.pem'), 'r') as f: for line in f: alipay_public_key += line 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) total_pay = order.transit_price + order.total_price total_pay = round(float(total_pay), 2) model = AlipayTradePagePayModel() model.out_trade_no = order_id model.total_amount = total_pay model.subject = "天天生鲜{0}".format(order_id) model.product_code = "FAST_INSTANT_TRADE_PAY" request = AlipayTradePagePayRequest(biz_model=model) response = client.page_execute(request, http_method="GET") # 访问支付页面 return JsonResponse({'res': 3, 'response': response})
def post(self): bid = self.get_argument('bid') out_trade_no = self.get_argument('out_trade_no') payConfig = self.DefaultValues[bid] # 设置配置信息 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = payConfig['zfbpay']['url'] alipay_client_config.app_id = payConfig['zfbpay']['appId'] alipay_client_config.app_private_key = payConfig['zfbpay']['app_private_key'] alipay_client_config.alipay_public_key = payConfig['zfbpay']['alipay_public_key'] # 客户端对象 client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) # 构造请求对象 model = AlipayTradeQueryModel() model.out_trade_no = out_trade_no request = AlipayTradeQueryRequest(biz_model=model) response_content = None try: response_content = client.execute(request) except Exception as e: print('1-' + traceback.format_exc()) if not response_content: print( "2-failed execute") else: response = AlipayTradeQueryResponse() # 解析响应结果 response.parse_response_content(response_content) print(response.body) if response.is_success(): # 业务成功,则通过respnse属性获取需要的值 print("业务成功- get response trade_no:" + response.trade_no) info = { 'errCode': '0', 'errMsg': '', 'detail': { 'trade_no': response.trade_no } } result = { 'result': info } self.write(json.dumps(result, ensure_ascii=False)) else: # 业务失败 print('业务失败-' + response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg) info = { 'errCode': response.code, 'errMsg': response.sub_msg } result = { 'result': info } self.write(json.dumps(result, ensure_ascii=False))
def __init__(self): alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.app_id = settings.APPID # 打开 APP_PRIVATE 证书 with open(settings.APP_PRIVATE) as f: alipay_client_config.app_private_key = f.read() # 打开 ALIPAY_PUBLIC 证书 with open(settings.ALIPAY_PUBLIC) as f: alipay_client_config.alipay_public_key = f.read() # 创建实例 self.ALIPAY_client = DefaultAlipayClient(alipay_client_config, logger)
def post(self): bid = self.get_argument('bid') payConfig = self.DefaultValues[bid] # 设置配置信息 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = payConfig['zfbpay']['url'] alipay_client_config.app_id = payConfig['zfbpay']['appId'] alipay_client_config.app_private_key = payConfig['zfbpay']['app_private_key'] alipay_client_config.alipay_public_key = payConfig['zfbpay']['alipay_public_key'] # 客户端对象 client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) model = AlipayTradeWapPayModel() model.productCode = "QUICK_WAP_PAY" model.body = "Iphone6 16G" model.subject = "苹果手机" model.out_trade_no = "20180510ABoeooer014" model.timeout_express = "90m" model.total_amount = 0.5 request = AlipayTradeWapPayRequest(biz_model=model) request.notify_url = 'http://wox2019.w-lans.com/alipayNotifyUrl.shtml' # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段 response = client.page_execute(request, http_method="GET") # GET请求获取完成请求的参数 _result = parse.parse_qs(parse.urlparse(response).query) #return self.write(_result) info = { 'errCode': '0', 'errMsg': '', 'detail': { 'app_id': _result['app_id'][0], 'version': _result['version'][0], 'format': _result['format'][0], 'sign_type': _result['sign_type'][0], 'charset': _result['charset'][0], 'method': _result['method'][0], 'timestamp': _result['timestamp'][0], 'sign': _result['sign'][0], 'out_trade_no': eval(_result['biz_content'][0])['out_trade_no'], 'subject': eval(_result['biz_content'][0])['subject'], 'body': eval(_result['biz_content'][0])['body'], 'total_amount': eval(_result['biz_content'][0])['total_amount'], 'biz_content': eval(_result['biz_content'][0]), 'notify_url': _result['notify_url'][0], #'return_url': _result['return_url'][0], } } result = { 'result': info }
def __init__(self): self.appid = settings.ALIPAY_APPID self.server_url = settings.ALIPAY_SERVER_URL self.alipay_public_key = settings.ALIPAY_PUBLIC_KEY self.app_private_key = settings.APP_PRIVATE_KEY client_config = AlipayClientConfig() client_config.server_url = self.server_url client_config.app_id = self.appid client_config.alipay_public_key = self.alipay_public_key client_config.app_private_key = self.app_private_key self.client = DefaultAlipayClient(client_config)
def TradeWapPay(self, body, out_trade_no, total_amount): client = DefaultAlipayClient( alipay_client_config=self.alipay_client_config, logger=logger) model = AlipayTradeWapPayModel() model.body = body model.subject = 'parkingpay' model.out_trade_no = out_trade_no model.total_amount = total_amount model.product_code = 'QUICK_WAP_WAY' request = AlipayTradeWapPayRequest(biz_model=model) response = client.sdk_execute(request) print("alipayhm.trade.wap.pay response:" + str(response)) return str(response)
def __init__(self, private_key, alipay_public_key): with open(private_key) as f: self.private_key = f.read() with open(alipay_public_key) as f: self.app_private_key = f.read() alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.app_id = '2016101000652414' alipay_client_config.app_private_key = self.private_key alipay_client_config.alipay_public_key = self.app_private_key self.client = DefaultAlipayClient( alipay_client_config=alipay_client_config)
def TradeAppPay(self, body, subject, out_trade_no, total_amount): client = DefaultAlipayClient( alipay_client_config=self.alipay_client_config, logger=logger) model = AlipayTradeAppPayModel() model.body = body model.subject = subject model.out_trade_no = out_trade_no model.total_amount = '0.01' model.timeout_express = self._alipy_apps['ALIPAY_TIMEOUT_EXPRESS'] model.product_code = 'QUICK_MSECURITY_PAY' request = AlipayTradeAppPayRequest(biz_model=model) request.notify_url = self._alipy_apps['ALIPAY_NOTIFY_URL'] response = client.sdk_execute(request) return str(response)
def get(self, request, *args, **kwargs): try: package_id = request.GET.get('package_id') order = VIPOrder.create_order(request.user, int(package_id)) if order: order.pay_type = VIPOrder.PAY_TYPE_BY_ALIPAY_APP out_trade_no = create_trade_id(order.id) order.outtradeno = out_trade_no order.save() result = {'order_id': order.id} alipay_client_config = AlipayClientConfig() alipay_client_config.app_id = smart_str( settings.ALIPAY_APP_INFO['basic_info']['APP_ID']) alipay_client_config.sign_type = smart_str( settings.ALIPAY_APP_INFO['other_info']['SIGN_TYPE']) with open( settings.ALIPAY_APP_INFO['basic_info'] ['APP_PRIVATE_KEY'], 'r') as fp: alipay_client_config.app_private_key = fp.read() client = DefaultAlipayClient( alipay_client_config=alipay_client_config) model = AlipayTradeWapPayModel() model.total_amount = smart_str( str_to_specify_digits(str(order.price))) model.product_code = smart_str("QUICK_WAP_WAY") model.subject = smart_str(_(order.name)) model.out_trade_no = smart_str(out_trade_no) # 返回页面时不使用缓存 quit_url = settings.LMS_ROOT_URL + reverse( "vip_alipay_h5_result") model.quit_url = smart_str(quit_url) model.passback_params = smart_str(settings.LMS_ROOT_URL + reverse("vip_purchase")) request = AlipayTradeWapPayRequest(biz_model=model) request.notify_url = smart_str( settings.ALIPAY_APP_INFO['other_info']['NOTIFY_URL']) result['alipay_request'] = client.sdk_execute(request) log.error(SERVER_URL + "?" + result['alipay_request']) data = { 'alipay_url': SERVER_URL + "?" + result['alipay_request'], 'order_id': order.id } return Response(xresult(data=data)) except Exception, e: log.exception(e)
def get_access_token_and_userid(self, alipay_client_config, auth_code): """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ client = DefaultAlipayClient(alipay_client_config=alipay_client_config) """ 系统接口:alipay.system.oauth.token """ # 对照接口文档,构造请求对象 from alipay.aop.api.request.AlipaySystemOauthTokenRequest import AlipaySystemOauthTokenRequest model = AlipaySystemOauthTokenRequest() model.grant_type = "authorization_code" model.code = auth_code result = client.execute(model) logging.info(">>>支付宝返回结果:{}".format(result))
def _init(self): alipay_client_config = AlipayClientConfig() alipay_client_config.app_id = """config.app_id""" alipay_client_config.app_private_key = """config.alipay_private_key""" alipay_client_config.alipay_public_key = """config.alipay_public_key""" return DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)
class AliPay: def __init__(self, private_key, alipay_public_key): with open(private_key) as f: self.private_key = f.read() with open(alipay_public_key) as f: self.app_private_key = f.read() alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.app_id = '2016101000652414' alipay_client_config.app_private_key = self.private_key alipay_client_config.alipay_public_key = self.app_private_key self.client = DefaultAlipayClient( alipay_client_config=alipay_client_config) def trade_page_pay(self): page_pay = AlipayTradePagePayModel() page_pay.out_trade_no = 91922212229232131 page_pay.product_code = 'FAST_INSTANT_TRADE_PAY' page_pay.total_amount = 10 page_pay.subject = '测试' request = AlipayTradePagePayRequest(biz_model=page_pay) request.return_url = 'http://139.199.123.96:8000/alipay/return/' request.notify_url = 'http://139.199.123.96:8000/alipay/return/' response = self.client.page_execute(request, http_method="GET") print("alipay.trade.page.pay response:" + response) return response
class Alipay(): def __init__(self): self.appid = settings.ALIPAY_APPID self.server_url = settings.ALIPAY_SERVER_URL self.alipay_public_key = settings.ALIPAY_PUBLIC_KEY self.app_private_key = settings.APP_PRIVATE_KEY client_config = AlipayClientConfig() client_config.server_url = self.server_url client_config.app_id = self.appid client_config.alipay_public_key = self.alipay_public_key client_config.app_private_key = self.app_private_key self.client = DefaultAlipayClient(client_config) def payorders(self, order_id, total_amount): model = AlipayTradePagePayModel() model.product_code = 'FAST_INSTANT_TRADE_PAY' model.total_amount = str(total_amount) model.subject = '天天生鲜订单支付-天天艹楼雅倩' model.out_trade_no = order_id request = AlipayTradePagePayRequest(biz_model=model) response_content = self.client.page_execute(request, http_method='GET') if not response_content: return "caolouyaqianshibai" # response = AlipayTradePagePayResponse() # response.parse_response_content(response_content) # # 响应成功的业务处理 # if response.is_success(): # # 如果业务成功,可以通过response属性获取需要的值 # print("get response trade_no:" + response.trade_no) # # 响应失败的业务处理 # else: # # 如果业务失败,可以从错误码中可以得知错误情况,具体错误码信息可以查看接口文档 # print(response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg) return response_content def order_status_query(self, order_id): model = AlipayTradeQueryModel() model.out_trade_no = order_id request = AlipayTradeQueryRequest(biz_model=model) response_content = self.client.execute(request) response = AlipayTradeQueryResponse() response.parse_response_content(response_content) return response
def pay(userinfo): """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ 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 = '' # 用户私钥 alipay_client_config.alipay_public_key = '' # 支付宝公钥(填入用户私钥,返回的支付宝公钥,而不是上面用户私钥对应的公钥,如果不会配置的话可以看我另一项目中的文档 https://github.com/yumusb/alipay-f2fpay/tree/master/%E5%AF%86%E9%92%A5%E5%AF%B9%E7%94%9F%E6%88%90%E4%B8%8E%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B) """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ #client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) client = DefaultAlipayClient(alipay_client_config=alipay_client_config) """ 系统接口示例:alipay.trade.pay """ # 对照接口文档,构造请求对象 model = AlipayTradePayModel() model.auth_code = userinfo model.subject = "Test" # 订单标题 model.out_trade_no = time() # 订单账号 model.scene = "bar_code" model.total_amount = 0.01 # 订单金额 request = AlipayTradePayRequest(biz_model=model) response_content = None try: 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(): # 如果业务成功,则通过respnse属性获取需要的值 print("get response trade_no:" + response.trade_no) else: # 如果业务失败,则从错误码中可以得知错误情况,具体错误码信息可以查看接口文档 print(response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg)
def sign(logger=None): # 构造签名基础参数 alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.app_id = settings.ALIPAY_APPID alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY client = DefaultAlipayClient(alipay_client_config, logger) return client
def get_url_request(): app_alipay_sanbox_private_path = r'C:\Users\jerry\Desktop\app_private_key.pem' alipay_sanbox_public_path = r'C:\Users\jerry\Desktop\alipay_public_key.pem' alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = "https://openapi.alipaydev.com/gateway.do" alipay_client_config.app_id = "20160923420591565" alipay_client_config.app_private_key = get_key( app_alipay_sanbox_private_path) alipay_client_config.alipay_public_key = get_key(alipay_sanbox_public_path) alipay_client_config.charset = 'utf-8' client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradePagePayModel() model.out_trade_no = "pay201805020000227" model.total_amount = 50 model.subject = "test" model.body = "alipaytest" model.product_code = "FAST_INSTANT_TRADE_PAY" # settle_detail_info = SettleDetailInfo() # settle_detail_info.amount = 50 # settle_detail_info.trans_in_type = "userId" # settle_detail_info.trans_in = "2088302300165605" # # settle_detail_infos = list() # settle_detail_infos.append(settle_detail_info) # # settle_info = SettleInfo() # settle_info.settle_detail_infos = settle_detail_infos # # model.settle_info = settle_info # # # sub_merchant = SubMerchant() # sub_merchant.merchant_id = "208830234153246" # # model.sub_merchant = sub_merchant request = AlipayTradePagePayRequest(biz_model=model) response = client.page_execute(request, http_method="GET") return response
def getAlipayUrl(request): #查看登录 token = request.POST['token'] user_token = Token.objects.filter(key=token) if len(user_token) == 0: return Response('nologin') #获取用户,文章信息 user = user_token[0].user article_id = request.POST['article_id'] article = Article.objects.get(id=article_id) #生成订单 nowtime = datetime.datetime.now() new_payorder = PayOrder(belong_user=user, belong=article) new_payorder.order = str(nowtime.year) + str( random.randrange(10000000, 99999999)) # print(new_payorder.order) new_payorder.price = '9.9' # new_payorder.save() alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = settings.ALIPAY_URL alipay_client_config.app_id = settings.ALIPAY_APPID alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradePagePayModel() #创建网站支付模型 model.out_trade_no = new_payorder.order model.total_amount = new_payorder.price model.subject = "打赏订单:" + new_payorder.order + '/' + new_payorder.price + '元' model.product_code = "FAST_INSTANT_TRADE_PAY" model.timeout_express = "5m" #发送请求 pay_request = AlipayTradePagePayRequest(biz_model=model) # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段 # pay_request.notify_url = settings.ALIPAY_NOTIFY_URL # pay_request.return_url = settings.ALIPAY_RETURN_URL response = client.page_execute(pay_request, http_method='GET') print(response) pay_link = response return Response({'pay_link': pay_link})
def order(request): from uuid import uuid4 orderno = uuid4().hex subject = "生鲜超市" totalmany = 50 client = DefaultAlipayClient( alipay_client_config=zfb_conf.alipay_client_config) model = AlipayTradeWapPayModel() model.out_trade_no = orderno model.subject = subject model.total_amount = totalmany req = AlipayTradeWapPayRequest(biz_model=model) req.return_url = zfb_conf.ALIPAY_TRADE_PAY_RETURN_URL response_content = client.page_execute(req) return HttpResponse(response_content)
def trans_to_account(out_biz_no, amount, alipay, name): # TODO 待测试 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do' alipay_client_config.app_id = alipay_app_id alipay_client_config.app_private_key = alipay_app_private alipay_client_config.alipay_public_key = alipay_public_key client = DefaultAlipayClient(alipay_client_config=alipay_client_config) alipay_model = AlipayFundTransToaccountTransferModel() alipay_model.out_biz_no = out_biz_no alipay_model.payee_type = "ALIPAY_LOGONID" alipay_model.amount = str(amount) alipay_model.payee_account = alipay alipay_model.payee_real_name = name alipay_model.remark = "猪猪惠返提现" # TODO 修改app名字 request = AlipayFundTransToaccountTransferRequest(biz_model=alipay_model) response_content = client.execute(request) print(response_content) return json.loads(response_content)
def get_pay_status(cls, order_id): # 获取内容 with open(ALIPAY_KEY_PATH) as f: alipay_public_key = f.read() with open(APP_KEY_PRIVATE_PATH) as f: app_private_key = f.read() # 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥; config = AlipayClientConfig() config.server_url = settings.SERVER_URL config.app_id = settings.APP_ID config.app_private_key = app_private_key config.alipay_public_key = alipay_public_key # 得到 client = DefaultAlipayClient(alipay_client_config=config) model = AlipayTradeQueryModel() model.out_trade_no = order_id request = AlipayTradeQueryRequest(biz_model=model) # 得到构造的请求,获取返回内容 import time i = 1 while True: time.sleep(10) response_content = None try: response_content = client.execute(request) except Exception as ex: print(ex) if not response_content: return None else: # 解析相应结果 response = AlipayTradeQueryResponse() response.parse_response_content(response_content) if response.is_success( ) and response.trade_status == 'TRADE_SUCCESS': return response.trade_no i += 1 if i == 30: # 五分钟后还是失败 # 判定支付失败 return None
def get_alipay_client(): alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = GETWAY alipay_client_config.app_id = APPID alipay_client_config.app_private_key = PRIVATE_KEY alipay_client_config.alipay_public_key = PUBLIC_KEY # 使用授权码换取令牌 alipay_client = DefaultAlipayClient(alipay_client_config) return alipay_client
def get_config_client(self): alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_gateway') alipay_client_config.app_id = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_appid') alipay_client_config.encrypt_key = self.env['ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_aes') alipay_client_config.app_private_key = self.env['ir.config_parameter'].sudo().get_param( 'odoo_alipay.alipay_sign') alipay_client_config.alipay_public_key = self.env['ir.config_parameter'].sudo().get_param( 'odoo_alipay.alipay_public_key') return DefaultAlipayClient(alipay_client_config=alipay_client_config)
def __init__(self, target, thread_num=0, timeout=5.0): super(AlipayThread, self).__init__() self.target = target self.thread_num = thread_num self.stopped = False self.timeout = timeout """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ self.client = DefaultAlipayClient( alipay_client_config=alipay_client_config, logger=logger) self.show_name_idx = 0 self.remark_idx = 0 self.amount_idx = 0 self.show_names = self.target["show_name"].split("/") self.remarks = self.target["remark"].split("/") self.amounts = self.target["amount"].split("/")
class Alipay: """ 支付宝支付 """ def __init__(self): self._set_config() self.client = DefaultAlipayClient(alipay_client_config=self.config, logger=logger) def _set_config(self): " 设置配置项 " config = AlipayClientConfig() config.server_url = 'https://openapi.alipay.com/gateway.do' config.app_id = settings.ALIPAY['appid'] config.app_private_key = settings.ALIPAY['app_private_key'] config.alipay_public_key = settings.ALIPAY['alipay_public_key'] config.sign_type = 'RSA2' self.config = config def get_pay_data(self, order, ip): " 获取支付数据 " model = AlipayTradeAppPayModel() model.total_amount = str(order.amount) model.subject = "" model.out_trade_no = order.number request = AlipayTradeAppPayRequest(biz_model=model) request.notify_url = '' response = self.client.sdk_execute(request) return {'detail': response} def parse_result(self, result): " 解析异步通知返回值 " try: if result['trade_status'] == 'TRADE_SUCCESS': is_success = True else: is_success = False return is_success, result except KeyError: logger.warning('keyerror') return False, None def check_result(self, data): " 验证返回值 " return True def return_failure(self): return "success" def return_success(self): return "success"