service_name: wallet-service
node_id: wallet-docker
environment: local
log:
  level: info
  format: json
  include_request_body: false
  include_response_body: false
  max_payload_bytes: 2048
grpc_addr: ":13004"
health_http_addr: ":13104"
mysql_dsn: "hyapp:hyapp@tcp(mysql:3306)/hyapp_wallet?parseTime=true&charset=utf8mb4&loc=UTC"
activity_service_addr: "activity-service:13006"
mysql_auto_migrate: false
red_packet_expiry_worker:
  enabled: true
  app_code: "lalu"
  poll_interval: "5s"
  batch_size: 50
projection_worker:
  enabled: true
  poll_interval: "60s"
  batch_size: 10
  lock_ttl: "30s"
  consumer_group: "hyapp-wallet-projection"
  consumer_max_reconsume_times: 16
rocketmq:
  # Docker 本地使用 compose RocketMQ 发布 wallet_outbox 事实。
  enabled: true
  name_servers: ["rocketmq-namesrv:9876"]
  name_server_domain: ""
  access_key: ""
  secret_key: ""
  namespace: ""
  send_timeout: "3s"
  retry: 2
  wallet_outbox:
    enabled: true
    topic: "hyapp_wallet_outbox"
    producer_group: "hyapp-wallet-outbox-producer"
  realtime_outbox:
    enabled: true
    topic: "hyapp_wallet_realtime_outbox"
    producer_group: "hyapp-wallet-realtime-outbox-producer"
google_play:
  enabled: false
  package_name: ""
  service_account_file: ""
  service_account_json: ""
  api_base_url: "https://androidpublisher.googleapis.com"
  token_url: "https://oauth2.googleapis.com/token"
  http_timeout: "10s"
  consume_enabled: true
  
mifapay:
  # MiFaPay 是 H5 统一三方支付入口；商家公钥只用于记录商户侧配置，真实下单签名必须继续使用商户私钥。
  enabled: true
  environment: "test" # 可选值：test/prod；切换环境时必须保证后台商户公钥和本地私钥是一对。
  environment_test:
    mer_account: "d00f5fc97a114a0db291eceaf9841739"
    mer_no: "10001925"
    merchant_public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7FsuU9HXVXuFMKMbz10Hq0B3JfOkPJZwUfEUTdST3UuHpkp90LVLCoYfHJ8W9tV1HUhvZ+taTWrPY82vL5KPkyKok/M64NCRR3Gf/dojm6W+/ajylBhkQYiR/aksXCVTbjgt8eAbWCHpsoqqji0ZjdVZM/br6yHz89mm3nWK3GMPheRjwC2LROUdqOkpb2H3C4PKEm/zGBW0/88uSDIUzsoKwyMOhMyJuXqI+HMpMG3SNT732f4SllJrrF/reRJnok87LqBPOTCfAVeEwgWhk0PD6sktdISarqnVgYqfGBpAS+AmqhaNforZ6UTdNFDBMithau+6f/qC3+rr3YiiwQIDAQAB"
    private_key: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDsWy5T0ddVe4UwoxvPXQerQHcl86Q8lnBR8RRN1JPdS4emSn3QtUsKhh8cnxb21XUdSG9n61pNas9jza8vko+TIqiT8zrg0JFHcZ/92iObpb79qPKUGGRBiJH9qSxcJVNuOC3x4BtYIemyiqqOLRmN1Vkz9uvrIfPz2abedYrcYw+F5GPALYtE5R2o6SlvYfcLg8oSb/MYFbT/zy5IMhTOygrDIw6EzIm5eoj4cykwbdI1PvfZ/hKWUmusX+t5EmeiTzsuoE85MJ8BV4TCBaGTQ8PqyS10hJquqdWBip8YGkBL4CaqFo1+itnpRN00UMEyK2Fq77p/+oLf6uvdiKLBAgMBAAECggEALvaXJ/SEEuouNtHSDsvvYCm5AwN8WMWTn9SFMknQ76G4XGRkx3meZYLs36UEzRrw4FaqPD3ZfZSBjNUrwAohGR1D3dHwmwcWNtnu7mPPu3edkY1mVeLa2OKoD3zz4YNRJo9nIa5kAIkMhHtlFEcF0tbXmKmxitD+Ri+zJnS4mL18cUrnRlhjheY6c16FTzalnSKLRQDDXNApWDO/9AXlzQ5NKQQgOvzFcOK02Yy1crOIzar+lK9QVt+Zbd3F1jqflSSIuGGbmzqfPSUqi31JfVq5gj1wWZwRent+62DZI1Gk1CXfopk+z+w5eXFregR9ZAUpRiK3cFkIMLepMhK4oQKBgQD2DAjwCcd2H2QK/POSQhfc++bB5ZNKnRK53uTWSkii2WyAYTfxFBOxK8IZZ6lmE5vNO2OKJIYaH6A3jQE0rE2JiXgEauYhp3iS/J9RtjmZPEl1vlI7ELkc8t/yawvPi82xPZ1PKpsO5aUSVW6ozw5k2ShfRS75lKJ7Yt8TXP6INQKBgQD16sqm613oM0U5VEzdAtOo1EeB1ZM+fMBBTd+veqG7gPtb7AR9buTLi8p87b6npA4lgfr07ha3garEO9oZmy4MEIDBlCVb/McOqEZXII9slpcWwWwVXL+soRKPAjY4K4+r/3a044eTphaLve3HBhIhC8e7CO7XvgA4rihQTzx53QKBgCH2K02mq+d8Eb0KiTxI7y5LfuCIpboI0Erjn0aM3lXMGRPnV2dpVAaCeboz+sfiMQE1D1pEDFaSwvSn++CfX9x6IxzI/JbsnNH9GKiYtH6YObOM36DTgBmk1JCLggfVzkCGtq30vY5i2FQdgra+TchRySbNT9yXTY4maZAsp915AoGBANE2Nb/6H0MrUyopwNaJ0B4iss8PLxyLL1ifcrysXKnTWoTibxNzY2yTeen8rSWb2XkpcqIrZ+Ioi2o07SC5t1wGMjP94Ca5D3Q1ztnS1pHwL4vpdBVceajYw5wsqonw7WLLjGbp527Cbw3lwEOAs62vgvVo7SFYAII4EA36yx11AoGBAO+LUxVk9C7BShM9bcV479zCp4HTz1G3/FRk17FYOGFe3ZD+ueworMFTZidQbMevBH9g9m6jmP4WHdJ5BmvJeb/r4ZO+aJh1TvmLs5xdd4R8b34jTkrr1CDRLhiSWunwKLODsooa56i+JBBh3McKADc/o4xJ7JkT/lC5RG3jm6rv"
    platform_public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoZnRxeMSOINq5SUdh7jJ9D99ffppPqruejTYxI6WDXvgjykvX2erB9r2sFPyWA6VtzH5MxLb7iUQm8ixv5XhG1ImIZ8RAw2bdkaLD2Km94H7OtZcAyEGXjMEazI6/qfKJjpgA9oz9Ei2AokLnvX9B75Rnx7/cW1GF3+bJEyT9Nk7t74wDvp4QeSmejJDq8Exzex0hksUjUWI+Mj9KhqFT0/AU9icbLNv5wfkMBqZW6Z3garPv0pfVYgZm0bBgyBVB9Bi9WMZ57puPixfBXJ6cyD26izap0ly4rJni/RQHfFtOHaj+Sr+WmDNZ/X4Wd7roS+0CgXjOUBaJdX5XJ0zUQIDAQAB"
    api_base_url: "https://platformtest.xqdmipay.com"
    http_timeout: "10s"
  environment_prod:
    mer_account: "6000055d34f445418124ab7c0beb81a6"
    mer_no: "10001910"
    merchant_public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvVDVrlVS+HkfLx+56v1Fyfqj5Gd+DRkPIK4EOu+SMi+wtP4dwPBeXkrL1w+nSC0UFQ2Py690qdRu1FCSTNMWC8kfzddC4xlckJKXa9NoDyeJIN/Z5Za9Fg2znfqTee9BE8NnJk4EtmRwKJQaP8sCrYsIDv/bagywM9t25lKn2bmUOZKVVUtn/Xf5OBYDE6AVHB83J+HxX5VPLie+dbRdsRR+hoZs/vzLTNlZsTcrAnWUf7cqd9XNr39gXnXgdw61kzAC9RtSLbRPAo474F03xmLZKsL70vmBgex9/paljPxNnFVq1CPxmam5yzY0NtS6iXUlU7ttqAzBolSwPWla7QIDAQAB"
    private_key: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC9UNWuVVL4eR8vH7nq/UXJ+qPkZ34NGQ8grgQ675IyL7C0/h3A8F5eSsvXD6dILRQVDY/Lr3Sp1G7UUJJM0xYLyR/N10LjGVyQkpdr02gPJ4kg39nllr0WDbOd+pN570ETw2cmTgS2ZHAolBo/ywKtiwgO/9tqDLAz23bmUqfZuZQ5kpVVS2f9d/k4FgMToBUcHzcn4fFflU8uJ751tF2xFH6Ghmz+/MtM2VmxNysCdZR/typ31c2vf2BedeB3DrWTMAL1G1IttE8CjjvgXTfGYtkqwvvS+YGB7H3+lqWM/E2cVWrUI/GZqbnLNjQ21LqJdSVTu22oDMGiVLA9aVrtAgMBAAECggEBAI/jZ3VoTnaiAIydjX5IYAnC4VxROKIV4MSS3o441iIk0ybNWanyR5ddPA7KS/d0o6XYt+k1AvOtjUr7riaL7V6pz+1wZdsbxJnxgPsoJBgYkYYV/ZQdfLvNUC6LbBmqOgkeZEDd3YEPV5vP7R99Whyy5j4YQxkYabgQXw9x1TeKHtCVY7DROTBaKcXH+OKrF73GeJfxACIlgcG9RUdiTnmmRoSfrDN2zQy1RiWCBiQhoUYYfJrPtC1IRd8HE8M3ctLchoIQKJ9Zu+5gHM1KaARkn/Hkk8Mo1uzwnvsDgI5Mjcm403gm3/rIlH2q4+LSMtNJib3hqFrVEJ6cM8AgG8ECgYEA+wacF72UY+YjZCp7mJk4QwJEHUvws+mqY2uzONS/cDpODoCnZAMejEmVn0kCuY+kjD79YBduPuJTzrZoUS+YfqIBxHryUPbXJOs2l9la/o6P3Nbo+ILDBKNp7Fm0t96Z6Va7jwyVpclL0NXpv4Q4VP2TfDFxp/1xjSZRPSCjdP0CgYEAwREvfEVPTWROktftppH2/NS0Kv88o+YfnF/upRwIYYxl4zAPT4WUPvwELLwW9xfmt/IQGoY/6t/Vk0YZ1B14uPKNEyoJyMqDP6p6kT7vUwI8uPUP/n5wW3bLKJnoScKbgCQ+M3P/TRsOJQlthnS2EzcmqZgmCqfULaqEE89w2LECgYBe0pxcC2zmX6S2zaVqe1ZZWZ3JQ0pla7rFW4WTzimShzO9HrQcf2EmtRUj2jyBQ9VwdMrZZYBrmKr3xseZA1WjYCcyxQ6LrvKOK5uvuJc62TdWwIe4eAyaz+/PLAOsARY6olyvKJ3Oxj8xX9ywT43H7RGtNDAuuPoPy42cfZvBMQKBgFAQemrEq3Biyprm5O0Q1yZeZyD1nAY0JqPIvMTH7UnW2WHvykmmEaZVCL4sejGaPdnGjpsRVWxnysA6b/ehCTFZlNt/sXMNWISMhCu7t6/q25ewOSPG931WtEVwHf6Ir8fiP9FCp3soXyNI15zMxb0OQABQ0mXU147giclVW2zhAoGBAPlW9hqbWtHQIdXAnsCLqa4YaBNex+ghv1tjcsi79uiydg5RjEiWz43xzEQrywnALXEHqjSShvBsHVpa2uTOlpA515UqgLyl7JIeqAKrPx+5qKIo8901OG/u/b00x0GTdF3wYpTavqcaFexNTzfylYUs8FueLNVh9NvTSqjEHjvo"
    platform_public_key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4Kt1qR5jwf4xUVHqo2pLZW2Xb43P9c8BjMHeq4ih+u+8Qr5YtJa2EPv/sNoAQktjaUhsg9tJvtn1Pc46xIo3XeZiicdn91eNSdC6mZ8NxT6IJyyEr5x15o6hJORkiDbYg8k3rf40bZl8B6Oz6pEGPIYrmO8DVWN0Ak7qmWhHF5ePKusfLjy4TWEt2JmQGHAz+lfkDGaQzwtrC2kt4adYwcdpY78B4fH8Ssofr2fLuMQYl2QYWIV0lplAQicuTRhgWj4tora/MoK/LbKKFCthrElGvVJtial1QCfhOOUVgdjzGKdmuer8qiuseDraVIKYkAjuY9fGBWF+2N7mNIWOKwIDAQAB"
    api_base_url: "https://platform.xqdmipay.com"
    http_timeout: "10s"

v5pay:
  enabled: true
  environment: "test" # 可选值：test/prod；切换环境时必须保证后台商户公钥和本地私钥是一对。
  environment_test:
    app_key: "GA2064226629847150667"
    merchant_no: "M2064226507994230883"
    secret_key: "mTFoZVczrZX8jCYA"
    api_base_url: "https://api-uat.v5pay.com"
    mer_account: ""
    mer_no: ""
    merchant_public_key: "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6yjOFNyhXnKZAzgDYgjj 4K/qfsoRUSFQPd4mL2HzluV9+e30sXUG9Up0kTI4Enu5Yi8wlwAvhe8kN/a8rkn2 SEWYOrK0HuTZDUPgVuM6AAbtb2FZlKJfU88+v8NnH2MCgCAJAEGwHPN1t08faUlN jHDFTcuxRLakT/RyrLbXk9NOQr3h/aC4AH7AAWQfsD1WzPqaVbE59mFEo1btqe0O 6w9Ysf1e3y4q7pdECfd4+hkTrKahU95KO66Xyisogbgc3SRZXDqzzN0cDo4NVNZw F0kpiQRM4179t1OLBGmLqMM37V+ONRxGxhcGSJ62REAstNRXc/n34AVCSpA92gCB awIDAQAB -----END PUBLIC KEY-----"
    private_key: "-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDrKM4U3KFecpkD OANiCOPgr+p+yhFRIVA93iYvYfOW5X357fSxdQb1SnSRMjgSe7liLzCXAC+F7yQ3 9ryuSfZIRZg6srQe5NkNQ+BW4zoABu1vYVmUol9Tzz6/w2cfYwKAIAkAQbAc83W3 Tx9pSU2McMVNy7FEtqRP9HKstteT005CveH9oLgAfsABZB+wPVbM+ppVsTn2YUSj Vu2p7Q7rD1ix/V7fLirul0QJ93j6GROspqFT3ko7rpfKKyiBuBzdJFlcOrPM3RwO jg1U1nAXSSmJBEzjXv23U4sEaYuowzftX441HEbGFwZInrZEQCy01Fdz+ffgBUJK kD3aAIFrAgMBAAECggEAAV1VwM8Jv3uojqYf3IBGGwyT4eBE56fq7sj5hyapQrPN nnDDWqPd6MUU7+Jb0YoKDw5/pWJFyrmsbjsbNWNOSUITul3e5+gwQdomFNFk8BFN bGsjGXBnX2jUkBYcSy7VM2G8NTx5JXN2OE+YISstoFLnmjMRGF+ujJygoIbysYCY 2rVjIda/VSkPwHvB55HjkeWpx+IdH2guDIA6MH3DgyAguTenBzgCxTBUhbTpIfE5 q2GBbTbJu7+qP8fzoVdWMb3vfpO7A73P+gTNul4I7d/+3mS+WSQSn+xaXKtcBmcS /br82rEnPVo0Ujsz8tJqLowoChFmPDnrZXFvurNKQQKBgQD4z3z5n3j6wdgf81fj 9nbHthRLEXjSygXyUm2KxOR6YKqBdj5FUfkHFy/8TKGv+xfdx46IMApHF4Z/G3Eb 5KCN0mCmnPOqHuzGxKgHmoOHzwCDUkn/c+vDAleh2AmYURhtR02uyoLRh5C8nmbo 47ZW1dcgeEZDiouiv4jHn42PKwKBgQDx9FYVp0X7pAgW50SVkry0QcHW8Vvfyc4w 8M0wDyMZoVJLywJzo4etB7xKvnUPcIbSzXu4QpTWsD2jhd2mxTvz09CqZEAcJIe2 ictESITKUgcfQQTK2qtTe09TC5Pr9plcc1QNz27CP8Ye1BJjeTNVMIysKab6y7YO o3FMzf22wQKBgH5tSA67ZsjcOMq7ZtyR/vcp4RPn8+H//5eLJNhPhd1dQyZ3g9rL dWOR97MW6U23o//wh89Rwdcv8AqkUgwfVynZTX074WB/SEcT5GHAtLcMizEvXiRs rc6wYQD++pkoE+ZrReDcTC7V2MjPIHGUS7HCBQcdtm5ZduyisIjm3RJzAoGBAK6o r9/PsXA29/P4nITQuVHySghskOLaXfLsUWKI+tCMqMi30pxBhzZ76AuYsw4jL+BK ny3jOmhELyq0/s1dgarA09e8qJ7oK+O0UryHEPyv/B4upFP/SD/qOtf6+pwSlqCr TBjwDcdBnDYy5tdR7aFoe5PoOXa/yTuF9sr3xFfBAoGAZG3xIHOWJ6ewMmyIhkt0 2jzCFsE8iSAD+epr4rUcewgtZTZa24qS2PtholY8z2lQOZxPVLENk6HMEWhKi45i ccS10Yt8CI1Ndrf8oO8wxXacKzWFkK1Xz5OYBzzuTGEksyhTugnnPu0r8Ccx2v9V cmNQ0NcQqHsMoZHgRgc11bA= -----END PRIVATE KEY-----"
    platform_public_key: "-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkopxwO+kdlf0Wx6LWD+wQVWa3LWmpIS0N0yGxEdIDLRmavZ9Yg/KYHw4pd8uJPwspj/2kOFLrCc9qxW+ennaAtDgxX+eh5eh1HxU2M7whZdEpH3oli92Xz4kQbNTwr7lnLnMzsSKtBsoM2Yvq4OoYxZADKHdoPG0FNTuT1TcWncL+6IsVnQqlzFUzv09W5C0sTWuINfPfREyhwoPOnzQw9eAJqZ7ET+ewNS7LKRXg+tmByffq+Xb9LGNrTe6bDgSwxf4suUGa/AKPupIncdW80sxOIYE6ji7yAXSakv3JUobPh5gZQH9+P6W0tlO16/ebdgGhp2ERfwr2f4QlWJpDQIDAQAB-----END PUBLIC KEY-----"
    http_timeout: "10s"
  environment_prod:
    app_key: ""
    merchant_no: ""
    secret_key: ""
    api_base_url: "https://api.v5pay.com"
    mer_account: ""
    mer_no: ""
    merchant_public_key: ""
    private_key: ""
    platform_public_key: ""
    http_timeout: "10s"

tron_grid:
  enabled: true
  api_base_url: "https://api.trongrid.io"
  usdt_contract_address: "TCSTWxGagPpCS8RaZeBXMW9d69gUsK9QGb"
  http_timeout: "10s"

external_recharge:
  usdt_trc20_enabled: true
  usdt_trc20_address: ""
  mifapay_notify_url: ""
  mifapay_return_url: ""
  v5pay_notify_url: "https://api-test.global-interaction.com/api/v1/payment/v5pay/notify"
  v5pay_return_url: "https://h5.global-interaction.com/recharge/index.html?env=test"
outbox_worker:
  enabled: true
  poll_interval: "1s"
  batch_size: 200
  concurrency: 4
  publish_timeout: "3s"
  max_retry_count: 10
  initial_backoff: "5s"
  max_backoff: "5m"
realtime_outbox_worker:
  enabled: true
  poll_interval: "500ms"
  batch_size: 50
  concurrency: 2
  publish_timeout: "3s"
  max_retry_count: 10
  initial_backoff: "2s"
  max_backoff: "1m"
  event_types:
    - "WalletRedPacketCreated"
    - "WalletRedPacketClaimed"
    - "WalletRedPacketRefunded"
