示例#1
0
 def post(self):
     """
     获取创建商户所需的配置信息
     :return:
     """
     result = dict(
         merchant_names=MerchantEnum.get_name_type_pairs(),
         payment_methods=PayMethodEnum.get_desc_value_pairs(),
         withdraw_type=DeliverTypeEnum.get_desc_value_pairs(),
         channels_withdraw=ChannelConfigEnum.get_withdraw_desc_name_pairs(),
         channels_deposit=ChannelConfigEnum.get_deposit_desc_name_pairs(),
     )
     return MerchantConfigResult(bs_data=result).as_response()
示例#2
0
 def validate_channel(self, value):
     try:
         if value.data:
             self.channel.data = ChannelConfigEnum.from_name(value.data)
         else:
             self.channel.data = None
     except Exception as e:
         raise StopValidation("无效的channel")
示例#3
0
 fields.String(
     required=False,
     description='商户订单号/系统订单号',
     example="TEXT|XXXXX|XXXXXX",
 ),
 'merchant_name':
 fields.String(
     required=False,
     description='商户名称',
     example=MerchantEnum.description_name_desc() + ", 空字符串则为全部",
 ),
 'channel':
 fields.String(
     required=False,
     description='通道名称',
     example=ChannelConfigEnum.get_name_list(),
 ),
 'page_size':
 fields.Integer(
     required=True,
     description='单页数据条数',
     example=10,
 ),
 'page_index':
 fields.Integer(
     required=True,
     description='页码',
     example=1,
 ),
 'begin_time':
 fields.String(
示例#4
0
 def channel_enum(self) -> ChannelConfigEnum:
     return ChannelConfigEnum(self._channel)
示例#5
0
 def validate_channel_id(self, value):
     try:
         self.channel_id.data = ChannelConfigEnum(int(value.data))
     except Exception as e:
         raise StopValidation("无效的通道")
示例#6
0
    def render_page(cls):
        """
        渲染页面
        :return:
        """
        print(request.args)

        try:
            order_id = request.args['order_id']
        except:
            return TemplateKit.render_template('deposit_simple.html', body="参数错误")

        order = DepositTransactionCtl.get_order_by_order_id(order_id)
        if not order:
            return TemplateKit.render_template('deposit_simple.html', body="订单不存在")

        cache = DepositPageRenderCache(order.order_id)
        cache_data = cache.get_content()
        print("&&&&&&&&&&&&&&", cache_data)
        if not cache_data:
            return TemplateKit.render_template('deposit_simple.html', body="订单已经过期")

        is_h5 = False
        prompt_msgs = []
        channel_enum = cache_data.get('channel_enum')
        if channel_enum:
            channel_enum = ChannelConfigEnum(int(channel_enum))
            prompt_msgs = channel_enum.get_prompt_info_detail()
            is_h5 = channel_enum.conf.payment_method.is_h5

        if cache_data['render_type'] == SdkRenderType.QR_CODE:
            merchant_config = MerchantFeeConfig.query_by_config_id(order.mch_fee_id)
            b64_img = QRCodeKit.gen_base64_qr_code_png(cache_data['render_content'])
            return TemplateKit.render_template(
                'deposit_qrcode.html',
                b64_img=b64_img,
                payment_type=merchant_config.payment_method.desc,
                sys_tx_id=order.sys_tx_id,
                amount=str(order.amount),
                valid_time=cache.EXPIRATION,
                payment_url=cache_data['render_content'] if is_h5 else None,
                prompt_msgs=prompt_msgs,
            )

        if cache_data['render_type'] == SdkRenderType.FORM:
            return TemplateKit.render_template('deposit_base.html', body=cache_data['render_content'])

        if cache_data['render_type'] == SdkRenderType.HTML:
            return TemplateKit.render_template_string(cache_data['render_content'])

        if cache_data['render_type'] == SdkRenderType.TRANSFER:
            data = json.loads(cache_data['render_content'], encoding='utf8')
            return TemplateKit.render_template(
                'bank.html',
                CardName=data['CardName'],
                CardNumber=data['CardNumber'],
                BankName=data['BankName'],
                amount=data['amount'],
                tx_id=data['tx_id'],
                start_time=data['start_time']
            )

        current_app.logger.error('failed to render page, order_id: %s, cache_data: %s', order.order_id, cache_data)

        return TemplateKit.render_template('deposit_simple.html', body="渲染失败")