- 新增 wechat_pay_mch_config 表,迁移时从 settings 种子默认商户 - TixianAutoRecord 增加 mch_id;查单/回调解密后按记录对齐 - 后台接口 wxmchlb/wxmchbj/wxmchscwj(权限 8080a)与证书上传 Co-authored-by: Cursor <cursoragent@cursor.com>
71 lines
3.5 KiB
Python
71 lines
3.5 KiB
Python
# 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),
|
|
]
|