syntax = "proto3"; package common.payment.v1; option go_package = "github.com/tech/sendico/pkg/proto/common/payment/v1;paymentv1"; // ------------------------- // Card network (payment system) // ------------------------- enum CardNetwork { CARD_NETWORK_UNSPECIFIED = 0; CARD_NETWORK_VISA = 1; CARD_NETWORK_MASTERCARD = 2; CARD_NETWORK_MIR = 3; CARD_NETWORK_AMEX = 4; CARD_NETWORK_UNIONPAY = 5; CARD_NETWORK_JCB = 6; CARD_NETWORK_DISCOVER = 7; } enum CardFundingType { CARD_FUNDING_UNSPECIFIED = 0; CARD_FUNDING_DEBIT = 1; CARD_FUNDING_CREDIT = 2; CARD_FUNDING_PREPAID = 3; } // ------------------------- // PCI scope: raw card details // ------------------------- message RawCardData { string pan = 1; uint32 exp_month = 2; // 1–12 uint32 exp_year = 3; // YYYY string cvv = 4; // optional; often omitted for payouts } // ------------------------- // Safe metadata (display / routing hints) // ------------------------- message CardMetadata { string masked_pan = 1; // e.g. 411111******1111 CardNetwork network = 2; // Visa/Mastercard/Mir/... CardFundingType funding = 3; // debit/credit/prepaid (if known) string issuing_country = 4; // ISO 3166-1 alpha-2 (if known) string issuer_name = 5; // display only (if known) } // ------------------------- // Card details // Either inline credentials OR reference to stored payment method // ------------------------- message CardDetails { string id = 1; oneof source { RawCardData raw = 2; string payment_method_id = 3; } string cardholder_name = 4; string cardholder_surname = 5; string billing_country = 6; // ISO 3166-1 alpha-2, if you need it per operation }