61 lines
1.7 KiB
Protocol Buffer
61 lines
1.7 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
package common.payment.v1;
|
||
|
||
option go_package = "github.com/tech/sendico/pkg/proto/common/payment/v1;paymentv1";
|
||
|
||
// CardNetwork identifies a card payment network (scheme).
|
||
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;
|
||
}
|
||
|
||
// CardFundingType classifies the funding source behind a card.
|
||
enum CardFundingType {
|
||
CARD_FUNDING_UNSPECIFIED = 0;
|
||
CARD_FUNDING_DEBIT = 1;
|
||
CARD_FUNDING_CREDIT = 2;
|
||
CARD_FUNDING_PREPAID = 3;
|
||
}
|
||
|
||
// RawCardData carries PCI-scope card credentials for tokenisation or
|
||
// direct processing.
|
||
message RawCardData {
|
||
string pan = 1;
|
||
uint32 exp_month = 2; // 1–12
|
||
uint32 exp_year = 3; // YYYY
|
||
string cvv = 4; // optional; often omitted for payouts
|
||
}
|
||
|
||
// CardMetadata holds non-sensitive display and routing hints derived from
|
||
// card details.
|
||
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)
|
||
}
|
||
|
||
// CardDetails provides card credentials for a payment operation, either
|
||
// as inline raw data or a reference to a 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
|
||
}
|