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 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 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): 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 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 _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_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 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 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 ali_pay(): app_private_key = open( os.path.join(settings.BASE_DIR, 'keys', 'app_private_key.txt'), 'r').read() alipay_public_key = open( os.path.join(settings.BASE_DIR, 'keys', 'alipay_public_key.txt'), 'r').read() alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2021000116661519' alipay_client_config.app_private_key = app_private_key alipay_client_config.alipay_public_key = alipay_public_key client = DefaultAlipayClient(alipay_client_config=alipay_client_config) return client
def get_braintree_gateway(sandbox_mode, merchant_id, public_key, private_key): print(sandbox_mode, "sandbox_mode") if not all([merchant_id, private_key, public_key]): raise ImproperlyConfigured("Incorrectly configured Alipay gateway.") # environment = braintree_sdk.Environment.Sandbox # if not sandbox_mode: # environment = braintree_sdk.Environment.Production # # config = braintree_sdk.Configuration( # environment=environment, # merchant_id=merchant_id, # public_key=public_key, # private_key=private_key, # ) # gateway = braintree_sdk.BraintreeGateway(config=config) alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' if not sandbox_mode: alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do' alipay_client_config.app_id = merchant_id alipay_client_config.app_private_key = private_key alipay_client_config.alipay_public_key = public_key client = DefaultAlipayClient(alipay_client_config=alipay_client_config) return client
def alipayconfig(): # 实例化阿里支付配置信息对象 alipay_config = AlipayClientConfig(sandbox_debug=True) # 阿里提供的服务接口,这个是测试接口,真实支付接口:https://openapi.alipay.com/gateway.do alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do" # 申请的沙箱环境的app_id alipay_config.app_id = "2016101800717513" # 商户的私钥 alipay_config.app_private_key = "MIIEpAIBAAKCAQEAv1339WKBm7b6iR6Dl59AM15Z3+duCc4cG1EOyhs8DmmVmVo/AQNb/XdSjT3ocBXEwNjwNhu7HN9xHOo68+slB4ngTL9Q3K/0BbN2mbKP57JgtDJEBBWoF7PTfCMOHj70tIYFS6JQyh81G1aX7DnnAyhKqXzfhZn/UTyvNr9Y6OksHOIdteIHnJNT+QqdCXCbjViuUWFMbWw2YXEqGu5/qAyRa9W+VSveX+LqYhBtsJWQhmxPWpd72yo5jqIsQTcuwR2CinFPAnI9LKYfdYiwgBmVeaf/p6Gijgea+y+vQjkm9y7V8P2YP+Z1OQU0PkHtTWTUfskvtTX3mgpFvabABwIDAQABAoIBAQCHZNSqqKdKpItduFkiTWn+7iJoaDVSeqEoMpFkLSCwkcNmXJN3BAlxq5qck9CAfOZYCyTpI3WfV/ePnalYKmZojwRDSJjNiy/7WJ3w4IUwSORima3FtgzXuENI8QRsId7AWpIkkRLX7nyEex/B4rWvZjJs+AytWedqcqUE9xzQq+y7uj9FAbNntIGD8GPWH+Y/AAbRdpHK9vTLbQ+SQlypzZQ/03pvrychPPSRgPivP35bxOtVxAiDp9uxu2LwyLV6cSCeEPB2xlSyEYI8rYbyilWb7sFENwi+JAGV03lhpVaQcpWKmD9GgYTf3F88icchEN5iGh32v2yWyoFaQYABAoGBAPyOrOoJtdyEKRCKE9yT2iKpwc0zBVbbZfLe0P67dlCf2h2JCO2ZTctBQEYHDxQnP5HczYOZip3UXL0u1IkTlYaP4g2IaS2GZ47Z49GgfoPgS8iG9JeT178Z9a5u4ZfXsFSAnxCcSR62xOE7Dz/AzLLxBIXx/J9KFrOtMum4Sv4BAoGBAMH5w3Oh64w2wl9jvA2hNJ13bjZa+QELtEnbe3Lt8i7JxlbWY+cnaKMx3sRuJM4NLXYevJ1RfAEkZLjU/LHznkQAQdg279inBjNmgx6U/zNWY5MkJTMlrNetELBWIGz8eVFfA3V9cMEYaLb3PYNIDYAWR+3OCHTDpmb15pjFNc4HAoGBAPXNRq1hVgaQ+gaG3F3J6HvkDCLSjVfDoK2H/pBtkvFVIsusG2xj0DsJ/qwpIpvStyQXak2ymh6SGNBnS6M91EFqt+/D29na/d8iYYAcXAWtvxQjhNohodD0SxDCCf3mhk83/5gDA4dJCsTK3kSGOLPPrz9ODThau02UPAEMxLABAoGACbSEafGtBlvrB7jGvOvW5RYHpqKQmNPMFnHr0ElFd7/Ss5+Qag1Xt+qT2cIlB0YzgxhwmXJtQOVgQLsvVXv57C8THE1LXMymi8XSQ6Jyzk/BNah2UAPPjQ70qc31W16ad07IroUzMgYVnynpovrk6gazXJuVYrozRi2Bdx1O3tsCgYBHClQR6/fTjkZqD23kzlKYKi+zObZ1ijTlscjn7tQFMX0IFoFjbW5mbNBwTXGL/ujIsqdDx9NQyDOTllpb3uutpKy4zcWRGlZDWZaidZTLhbzp08A9W7N/sfJQ5cqwL/tEYVx3am+CxTgXd1tO6MsedK5Drde7MuBXN8Tr3Bof7g==" # 阿里的公钥 alipay_config.alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv1339WKBm7b6iR6Dl59AM15Z3+duCc4cG1EOyhs8DmmVmVo/AQNb/XdSjT3ocBXEwNjwNhu7HN9xHOo68+slB4ngTL9Q3K/0BbN2mbKP57JgtDJEBBWoF7PTfCMOHj70tIYFS6JQyh81G1aX7DnnAyhKqXzfhZn/UTyvNr9Y6OksHOIdteIHnJNT+QqdCXCbjViuUWFMbWw2YXEqGu5/qAyRa9W+VSveX+LqYhBtsJWQhmxPWpd72yo5jqIsQTcuwR2CinFPAnI9LKYfdYiwgBmVeaf/p6Gijgea+y+vQjkm9y7V8P2YP+Z1OQU0PkHtTWTUfskvtTX3mgpFvabABwIDAQAB" # 实例化一个支付对象放回 alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config) return alipay_client
def aliPay(): """实例化阿里支付配置信息表""" aliPayConfig = AlipayClientConfig(sandbox_debug=True) # 阿里提供服务的接口 aliPayConfig.server_url = 'https://openapi.alipaydev.com/gateway.do' # 沙箱环境的 ID aliPayConfig.app_id = '2016102200740828' # 商户私钥 with open('Payment\keys\AliPayPublicKey.txt') as fp: aliPayConfig.app_private_key = fp.read() # 阿里的公钥 with open('Payment\keys\AliPayPublicKey.txt') as fp: aliPayConfig.alipay_public_key = fp.read() # 实例化一个支付对象并返回 return DefaultAlipayClient(alipay_client_config=aliPayConfig)
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 ali_pay(): # 为阿里支付实例化一个配置信息对象 alipay_config = AlipayClientConfig(sandbox_debug=True) # 初始化各种配置信息 # 阿里提供服务的接口 alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do" # 申请的沙箱环境的app_id alipay_config.app_id = "2016101600702552" # 商户的私钥 with open("keys/应用私钥2048.txt") as f: alipay_config.app_private_key = f.read() # 阿里的公钥 with open("keys/应用公钥2048.txt") as f: alipay_config.alipay_public_key = f.read() # 实例化一个支付对象并返回 alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config) return alipay_client
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 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 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 alipayclient(): """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ alipay_client_config = AlipayClientConfig(sandbox_debug=True) alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2016092700611690' with open("keys/private_key.txt") as f: alipay_client_config.app_private_key = f.read() # 阿里的公钥 with open("keys/public_key.txt") as f: alipay_client_config.alipay_public_key = f.read() """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ client = DefaultAlipayClient(alipay_client_config=alipay_client_config) return client
def do_pay_goods(request): user_id = request.session.get('id') id = request.POST.get('id') name = request.POST.get('name') phone = request.POST.get('phone') address = request.POST.get('address') t = str(time.time()).split('.') order = t[0] + t[1] goods = Goods.objects.filter(id=id, is_activate=0) if not goods.exists(): return HttpResponse('该商品已被购买。') goods = goods[0] goods.is_activate = 1 goods.save() o = Orders(order=order, address=address, phone=phone, name=name, goods_id=id, user_id=user_id) o.save() money = goods.price alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2016092100561600' alipay_client_config.app_private_key = 'MIIEpQIBAAKCAQEAxr2mbz2s8RigfJPxqYFht3hjtbEY9k/7C5BNvATGJRXSpI+9XmSCHG58OnYoZvYLgQoSLKRrE/z7ZeDL8gCVRuLWmEUHRYGEeBQ3IraaHqfHewP39yyoZ3M0Z9gIoK+yRIsgMcK4vdYwQGaw+MRypIEmqIC+AUeWOStYVDzK/TtcJPq8NZN+Gc2hzm94NE4F1fE+OFXVDPmoKJyljRsD2NYRz2iV6nuvRZ4inU31lpy6wNWwgqAZi6tIKMr1ElOFWH59ReCtkTyY0N2u4Z2TopiZgpCnZ3tQAoSEOslyefIH4w/I/dm2zxH3FF7bRuEp5jkueem5gfzmarGRClNp0wIDAQABAoIBABTfaDJ4tMghgQF0fEYEK6IcR8SWU/vSjJg7UJ61laXhc90Kp6XZQnz/8ZYmQLoHj0+/IgeEQSa5RCIACQtimkr2mfkmDsxy/Nmrrdq8eNVNY7r8wLc5/nnW9KMPYmCV81AVmI0BWWu+qhSpdF68Kxox4kCCPPJfdVyNu9olBGCyAtPKp2J/+lD/qCG9uxo7ltT5L4nsoR9gciLqce4B4VImHroUatDcOrDeMniRhNHkNa2YRkV4ddncAHtexAjA8yesTO1bO1D/TyLOHRnNElTBSDJbJaVzifgHM0OmcJUhgdbjJhGEUh+/atMjHLmMiZxEwoUsn4Ctcb8/NT541CECgYEA8Ao8+LIYzydlmaV4ns7GmclkfDXp3ZzVUeoQLCPGQtVeSZjiwIeB4G0bcO3d4JA0c1g5dfYJUA7YhOaOcQzMkkUnJu7oMBX2STYohX2012AdZPUz1/UWnckt5zvZoRYK0KjVQ06zLo2gWuk+dr+KVYQB1XRh777QxLhXK19V8LECgYEA0/RzoZ/+KvMTrFDEFiJep/I3avk6kohx8JUJyJQlus0cxnUdBv3rp3RkElJYCnvvtwhILWRuMovRTKxgUU7fXGIZY3HH7Zw0V3wpsOzPefNsVHCsg9kmpHqIEbabdJKAtnNIginMgEs0l5K2LKPbRK1CETRG3GwRcsoCdFV7A8MCgYEAyWB9eFLJd3jgxr7Ia8qjWL9ZOs9sLMx3Nip8eNtmaAli+bF2gfjs36AJRnt4Cf5Q0newdSL8+xoJUa2u0G7hbNDxILuLNVQnc5Io+pzUS1/KKTmAzetClwsBJJ3UXU0Fs7oAeGAc+LA+WCaXjb3xSv7dHvttclmOAYt5LdzkV3ECgYEAqkr6aH4yaPGZ+dV+ZkZBBPDAA8uwerDz0pb8IFKfKcHIf87yfn6eypDiIjJUmD/Rbp5R116chzH8/Hx2en1DSmdq/JIbTtY026Ffoc3yOIoSnJlWkixzNq1YC9tKdVOL5IslU6cfrmg+HhX7FkykTD5kGYyF7m1Ja4/QfwV6658CgYEAq/YNAIzrLkQxQeyS26bbCf7+FT6jLGmKgxyReODIOPKk7S+vaZWbyHX14AW9cDBeOfsiIQobfkIHMRJtVqe5TC49lHh08zAX610SvXSzIkpeTIMfUVKwhr0xfOqCMSEHKNG6mGbTie0AvhGCHYl2ptAWZot9ugNcgwdTu43Nyag=' alipay_client_config.alipay_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8OsmAJsaykPLzLIN//XnymU4s13kPE95EyOvZFq8TMPKJtsQ/f7eQB72wYAi3NarGT7RwebfJoAyeaM0KJsYNFqAodVHwpPRSemj8mwBtzEGGSyOT4Ilbv4KOz+HAsOkaLuQQ2ZGD1m7CCrgZCtxJDVqbd4xigSgMwrTFZYywoT0Sswv0oPV2TMl1tg+F7VUuvQpEvIn6qCQfzXa15eX9/P8OknvP9NSl3jOvDcpMliC2KvbfkNF9Qx9FEgtRlfnZdDItgmUj34VmBph+LUrAyV3lZjLpbFMhKlTBUeAbH72JPUKifXTXKsmbAl0n6cPaJQgb3zd+cfW7equoMhIEQIDAQAB' client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradePagePayModel() model.out_trade_no = o.order model.total_amount = money model.subject = "小动物保护网站-" + goods.name model.body = goods.name model.product_code = "FAST_INSTANT_TRADE_PAY" request = AlipayTradePagePayRequest(biz_model=model) request.return_url = 'http://39.105.195.67:8000/return_url' print('request:', request) # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段 response = client.page_execute(request, http_method="GET") print('response:', response) return HttpResponseRedirect(response)
def alipay_get_auth_code(self, redirect=None, **kw): """ 支付宝登录回调方法 """ auth_code = request.params['auth_code'] logging.info('>>>auth_code:{}'.format(auth_code)) # 用得到的auth_code换取access_token及用户userId alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = request.env[ 'ir.config_parameter'].sudo().get_param( 'odoo_alipay.alipay_gateway') alipay_client_config.app_id = request.env['ir.config_parameter'].sudo( ).get_param('odoo_alipay.alipay_appid') alipay_client_config.encrypt_key = request.env[ 'ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_aes') alipay_client_config.app_private_key = request.env[ 'ir.config_parameter'].sudo().get_param('odoo_alipay.alipay_sign') alipay_client_config.alipay_public_key = request.env[ 'ir.config_parameter'].sudo().get_param( 'odoo_alipay.alipay_public_key') self.get_access_token_and_userid(alipay_client_config, auth_code)
def get(self,order_id): order = MovieOrder.query.get(order_id) total_price = order.o_price flight = Flight.query.get(order.o_flight_id) movie = Movie.query.get(flight.f_movie_id) # Alipay Client alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = ALIPAY_APPID alipay_client_config.app_private_key = ALIPAY_PRIVATE_KEY alipay_client_config.alipay_public_key = ALIPAY_PUBLIC_KEY client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradePagePayModel() model.out_trade_no = "pay2018050200005262" model.total_amount = total_price model.subject = movie.showname model.body = order.o_seat model.product_code = "FAST_INSTANT_TRADE_PAY" pay_request = AlipayTradePagePayRequest(biz_model=model) pay_request.notify_url = 'https://ruoxianer.github.io/' pay_request.return_url = 'https://ruoxianer.github.io/' # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段 response = client.page_execute(pay_request, http_method="GET") # print("alipay.trade.page.pay response:" + response) data = { 'msg':'ok', 'status':HTTP_OK, 'data':{ 'pay_url':response, 'order_id':order_id } } return data
def test_alipay(): # 实例化客户端 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '请填写appi_id' alipay_client_config.app_private_key = '请填写开发者私钥去头去尾去回车,单行字符串' alipay_client_config.alipay_public_key = '请填写支付宝公钥,单行字符串' client = DefaultAlipayClient(alipay_client_config, logger) # 构造请求参数对象 model = AlipayTradeCreateModel() model.out_trade_no = "20150320010101001"; model.total_amount = "88.88"; model.subject = "Iphone6 16G"; model.buyer_id = "2088102177846880"; request = AlipayTradeCreateRequest(biz_model=model) # 执行API调用 try: response_content = client.execute(request) except Exception as e: print(traceback.format_exc()) if not response_content: print("failed execute") else: # 解析响应结果 response = AlipayTradeCreateResponse() 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)
def StartCaolouyaqian(): alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = '' alipay_client_config.app_id = '' alipay_client_config.app_private_key = '' alipay_client_config.alipay_public_key = '' client = DefaultAlipayClient(alipay_client_config) # 构造请求参数对象 model = AlipayTradePagePayModel() model.out_trade_no = "20150320010101002" model.product_code = 'FAST_INSTANT_TRADE_PAY' model.total_amount = "88.88" model.subject = "Iphone6 16G" request = AlipayTradePagePayRequest(biz_model=model) # 执行API调用 try: response_content = client.page_execute(request) print(response_content) return response_content except Exception as e: print(traceback.format_exc())
def alipay(request): total_price = request.GET.get('total_price') # Alipay Client alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = ALIPAY_APPID alipay_client_config.app_private_key = ALIPAY_PRIVATE_KEY alipay_client_config.alipay_public_key = ALIPAY_PUBLIC_KEY client = DefaultAlipayClient(alipay_client_config=alipay_client_config) model = AlipayTradePagePayModel() model.out_trade_no = "pay201805020000526" model.total_amount = total_price model.subject = "测试" model.body = "支付宝测试" model.product_code = "FAST_INSTANT_TRADE_PAY" request = 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) return redirect(response)
def alipay_base_config(): """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' # 支付宝网关地址,沙箱的话加dev alipay_client_config.app_id = settings.ALIPAY_APP_ID # 公钥,私钥要读出来 with open(settings.MY_PRIVATE_KEY, 'r') as f: alipay_client_config.app_private_key = f.read() with open(settings.ALIPAY_PUBLIC_KEY, 'r') as f: alipay_client_config.alipay_public_key = f.read() # 沙箱模式 alipay_client_config.sandbox_debug = True """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) return client
from alipay.aop.api.domain.AlipayTradeCreateModel import AlipayTradeCreateModel from alipay.aop.api.request.AlipayTradeCreateRequest import AlipayTradeCreateRequest from alipay.aop.api.response.AlipayTradeCreateResponse import AlipayTradeCreateResponse logging.basicConfig( level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s', filemode='a', ) logger = logging.getLogger('') if __name__ == '__main__': # 实例化客户端 alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '请填写appi_id' alipay_client_config.app_private_key = '请填写开发者私钥去头去尾去回车,单行字符串' alipay_client_config.alipay_public_key = '请填写支付宝公钥,单行字符串' client = DefaultAlipayClient(alipay_client_config, logger) # 构造请求参数对象 model = AlipayTradeCreateModel() model.out_trade_no = "20150320010101001" model.total_amount = "88.88" model.subject = "Iphone6 16G" model.buyer_id = "2088102177846880" request = AlipayTradeCreateRequest(biz_model=model) # 执行API调用 try:
def alipy(request, order_num, total): # 导入配置类 alipy = AlipayClientConfig() # 支付宝的网关 alipy.server_url = 'https://openapi.alipaydev.com/gateway.do' # 商家APPID alipy.app_id = '2016092000556084' # 支付宝的私钥 alipy.app_private_key = 'MIIEpgIBAAKCAQEAzfsgTn6BAcTMRg4P5cbtcNgN0kQLkOVA2DGhrY+nIcXkzL5IjDdR85ck/dIslv/TeESyHbF48ssS9CiBS6YUASiDa1bDv5A94GWos4FgFM4a8fKx4fc2QXhSY4rG+zIJAVSctwKnDTt0S8VtycS7GBu9uTAthLz4wZKNQexi1W6dSLkj7SDlYapR2zlmF+3NSB8ID52k7cQuPFR+tJSa0SMt0Q6w1kzjJmPDBW8tNo2lqGq9OguefZz4+wnGacaTjzB+e/P1Ni5oIc8L9JJyXfu3qUTop1QgogIOjCRAtM4RpQIp+GIGs72kljnosPqlUfn8kjBo9Ndj7SfzDoBpcQIDAQABAoIBAQCijsLDT9DuHWr9CpH/TAwNV2UpAOyD0HlpZVnsSIek/rF/59gHWI1DiY/3BMyN6p3wt34+MtZ5/kwaBnFry0jUVS3KI3Jely5ODsyhxcOXB8V6FofOBjR6XMPgrSA2FBnJRAZd5CkEJ1yzg78OUkU5VINZSC1UKXLECa2TTkP9nWDpnbWz37vvyZtZ+JtJvNcxwr7Bjw+HkZ7TxAqCMOqe6Avs7KkSCJXBOPXP+t/GyEgFKnwexVFuhUr4XcgzLrCo5+lQk0cXxTfn4rMC9h90y7onUZxxCL02dvVJ9q2Y5cklCnvkqvRG2k2tqPNQx4Fz4YuHtLuUuoYm9FhKJyoFAoGBAOfUVMGcSKzotZ9NuxTiwiPEKymhbPfSlR9E9pjiaEfylq9TLwN6omKZxSV4IZufXE319dHYDNiOG5UsZ5f9/ZouXxNuLCYqkB2i70wPNlaMVo3PcJ12f24puVXV2FxGu4wrdF7Xi/BFM68qy6xCRa08PFapstD+wy3//zQEPz5/AoGBAON04k5cZlwziNgh5gQFeu5OsyZcqNF2jGHAfuzfgV6GzuyJe5Df24tOSQqCMAucVIaJyHfF3ydnkKq99uGxJlcApNIluAz/7P3lAbgtGqSLBdwaERighfyiWF+dN4HGpiszBgAnJxvDdPbzA0eQxWum6eA/jaif10lEZ2XC1EAPAoGBAKy5KhzGD++jwg3aoBRDjlmPgokV2FYb8zbE7uWhagiQ2WvvEgwJhorn/laYVpHX/bGoG2opCgked7aAyv4XIqeI/RVA9GvLMmyiRJ/qhZWeIa6uaz0mWHL/azJkjTrTCFC634z6Ey0EoilUPUMubTNQubPn426LIWhYXw+mSmiJAoGBAMt+wg1LW4S30oFTap9Ea+QS4vK6SYsE3bmC58tydyKjxzMWGUfXD2tFgdF2AhgRKAop8QE/NVPisyoexGbM/7ks6Ujd2BlBSr0oCm7FY6W8f2SYqZz32IfakugQFx3zJK1Xe9HdNX8AUn+xkMiRPB8A+RLYqRsozgpNuZfwQ8Z/AoGBALb+uPBKRsaxC1q6jkL0MaeGNiCqO+StLCVMoFbTjatSrmw2wt386Qo0DYii+cS1KIXFixZJuw1m3vm4WR5JgoRj477xNVJTUFb/A/GMCLcum9IajLnuD+aqdV3vpGmpQdECsi1sbTMalcjaFozbZLkaJIB5akpfl//A+5UIbRbk' # 支付宝的公钥 alipy.alipay_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzfsgTn6BAcTMRg4P5cbtcNgN0kQLkOVA2DGhrY+nIcXkzL5IjDdR85ck/dIslv/TeESyHbF48ssS9CiBS6YUASiDa1bDv5A94GWos4FgFM4a8fKx4fc2QXhSY4rG+zIJAVSctwKnDTt0S8VtycS7GBu9uTAthLz4wZKNQexi1W6dSLkj7SDlYapR2zlmF+3NSB8ID52k7cQuPFR+tJSa0SMt0Q6w1kzjJmPDBW8tNo2lqGq9OguefZz4+wnGacaTjzB+e/P1Ni5oIc8L9JJyXfu3qUTop1QgogIOjCRAtM4RpQIp+GIGs72kljnosPqlUfn8kjBo9Ndj7SfzDoBpcQIDAQAB' # 设置默认的客户端配置 client = DefaultAlipayClient(alipay_client_config=alipy) # 订单号 order_num = order_num if order_num == "": return HttpResponse("请确认订单号正确") # 判断用户的登录状态 user_id = request.session.get("uid") if user_id == None: return redirect("/users/user_login") # 查询当前用户购买的订单 order_info = Order.objects.filter(order_num=order_num, user_id=user_id).get() # 判断此订单是否有效 # print(order_info) # return HttpResponse("1") if not order_info: return HttpResponse("订单有误") # 请求数据交易层模型 model = AlipayTradePagePayModel() # 订单号 model.out_trade_no = order_info.order_num # 订单的金额 model.total_amount = total # 标题 model.subject = "测试支付金额" # 订单描述 model.body = "这是一个巨款订单" # 销售的产品码 model.product_code = "FAST_INSTANT_TRADE_PAY" # 交易请求 qingqiu = AlipayTradePagePayRequest(biz_model=model) # 发送上一步的请求 第一个参数是qingqiu 第二个是发送的方式 # localhost:8000/cart/aliapy?2343243243&111 # 回调地址 #qingqiu.return_url = "http://47.107.229.163/cart/return_url/" qingqiu.return_url = "http://127.0.0.1:8000/cart/return_url/" xiangying = client.page_execute(qingqiu, http_method="GET") # print(xiangying) # return HttpResponse(1) return redirect(xiangying)