PaymentMethod

payment_method är ett nestat objekt som inkluderas i webhook-payloads för subscription-events. Objektet innehåller gemensamma fält samt typspecifika fält beroende på betalsätt.

Gemensamma fält

type PaymentMethodBase = {
id: string;
type: "autogiro" | "swish" | "stripe" | "adyen";
inserted_at: string;
updated_at: string;
};

Autogiro

Inkluderas när payment_method_type är "autogiro".

type AutogiroPaymentMethod = PaymentMethodBase & {
type: "autogiro";
payer_number: string;
clearing_number: string;
account_number: string;
personal_identity_number: string;
bank: string | null;
};

Det signerade medgivandet (PDF) och BankID-signaturen (XML) ligger inte i objektet. De hämtas via API:et med länkarna i documents på samma webhook: PDF:erna ägs av prenumerationen (/api/v1/subscriptions/:id/mandate_pdf_masked resp. …_unmasked), XML:en av medgivandet (/api/v1/mandates/:id/signature_xml, där :id är detta objekts id). Se Payment Sessions.

Payern har status "pending" tills Bankgirot har behandlat medgivandet. Godkänner Bankgirot medgivandet kommer payer.updated med status "active". Avvisar Bankgirot det kommer payer.updated med status "rejected". Se Payer.

Swish

Inkluderas när payment_method_type är "swish".

type SwishPaymentMethod = PaymentMethodBase & {
type: "swish";
consent_id: string;
alias: string;
status: string;
activated_at: string | null;
};

Stripe

Inkluderas när payment_method_type är "card", "apple_pay", "google_pay" eller "stripe_subscription".

type StripePaymentMethod = PaymentMethodBase & {
type: "stripe";
stripe_payment_method_id: string;
};

Adyen

Inkluderas när organisationen tar betalningen via Adyen. Kort och plånböcker har samma payment_method_type oavsett vem som lagrat dem, så det är payment_method.type som säger om ni fått ett Adyen- eller ett Stripe-objekt. stored_payment_method_id och shopper_reference är de värden Adyen behöver för att dra betalmetoden igen.

Drar ni de löpande perioderna själva heter payment_method_type i stället "card_external", "apple_pay_external" eller "google_pay_external". Repejo drar då aldrig prenumerationen igen.

Repejo sparar inte heller betalmetoden. Ni får stored_payment_method_id bara i de webhooks som skickas när givaren tecknar gåvan: subscription.created och, om gåvan tecknades i en betalsession, payment_session.succeeded och payment_session.finalized. Spara det då. I senare händelser är värdet null. Har ni tappat det kan ni hämta det från Adyen med shopper_reference.

De två fälten är Adyens egna, under våra namn. shopper_reference är det shopperReference vi skickade till Adyen, och det är alltid givarens payer.id (till exempel "pay_2bQ8xK…"). Vi skickar det på varje betalning, även en engångsgåva. En engångsgåva har inget payment_method-objekt, så para ihop Adyens egen notifiering med våra webhooks på payer.id, som alltid finns med. stored_payment_method_id är Adyens additionalData.recurring.recurringDetailReference.

payment_method.id är Repejos id för betalmetoden och börjar alltid med apm_ (till exempel "apm_4Xk9Tq…").

type AdyenPaymentMethod = PaymentMethodBase & {
type: "adyen";
stored_payment_method_id: string | null;
shopper_reference: string;
};

Union-typ

type PaymentMethod =
| AutogiroPaymentMethod
| SwishPaymentMethod
| StripePaymentMethod
| AdyenPaymentMethod;

payment_method_type säger vilket betalsätt givaren valde, inte vilken form objektet har. Kort och plånböcker kan ligga hos antingen Stripe eller Adyen med samma payment_method_type, så läs payment_method.type för att veta vilken variant ni får.

payment_method är null om betaluppdraget inte har en kopplad betalmetod.