# Generated manually for multi WeChat merchant transfer configs from django.db import migrations, models def seed_default_mch(apps, schema_editor): WechatPayMchConfig = apps.get_model('peizhi', 'WechatPayMchConfig') if WechatPayMchConfig.objects.exists(): return # 运行时从 settings 导入,避免迁移环境无配置时炸掉 try: from django.conf import settings raw = getattr(settings, 'WECHAT_PAY_V3_CONFIG', {}) or {} except Exception: return mch_id = str(raw.get('MCHID') or '').strip() appid = str(raw.get('APPID') or '').strip() api_v3_key = str(raw.get('API_V3_KEY') or '').strip() private_key_path = str(raw.get('PRIVATE_KEY_PATH') or '').strip() cert_serial_no = str(raw.get('CERT_SERIAL_NO') or '').strip() if not all([mch_id, appid, api_v3_key, private_key_path, cert_serial_no]): return WechatPayMchConfig.objects.create( mch_id=mch_id, name='默认商户(自settings迁移)', appid=appid, api_v3_key=api_v3_key, private_key_path=private_key_path, cert_serial_no=cert_serial_no, platform_pub_key_path=str(raw.get('PLATFORM_CERT_DIR') or '').strip(), notify_url=str(raw.get('NOTIFY_URL') or '').strip(), transfer_scene_id=str(raw.get('TRANSFER_SCENE_ID') or '1005').strip() or '1005', priority=1, enabled=True, ) class Migration(migrations.Migration): dependencies = [ ('peizhi', '0021_withdrawconfig_dongjie_quanju_enabled'), ] operations = [ migrations.CreateModel( name='WechatPayMchConfig', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('mch_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='商户号')), ('name', models.CharField(blank=True, default='', max_length=100, verbose_name='备注名称')), ('appid', models.CharField(max_length=64, verbose_name='小程序AppID')), ('api_v3_key', models.CharField(max_length=64, verbose_name='APIv3密钥')), ('private_key_path', models.CharField(max_length=500, verbose_name='商户私钥pem路径')), ('cert_serial_no', models.CharField(max_length=128, verbose_name='商户证书序列号')), ('platform_pub_key_path', models.CharField(blank=True, default='', max_length=500, verbose_name='微信平台公钥pem路径')), ('notify_url', models.CharField(blank=True, default='', max_length=500, verbose_name='转账回调URL')), ('transfer_scene_id', models.CharField(default='1005', max_length=32, verbose_name='转账场景ID')), ('priority', models.IntegerField(db_index=True, default=100, verbose_name='优先级(越小越优先)')), ('enabled', models.BooleanField(db_index=True, default=True, verbose_name='是否启用')), ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ], options={ 'verbose_name': '微信转账商户配置', 'verbose_name_plural': '微信转账商户配置', 'db_table': 'wechat_pay_mch_config', 'ordering': ['priority', 'id'], }, ), migrations.RunPython(seed_default_mch, migrations.RunPython.noop), ]