Betalinger med Stripe og SaaS-faktureringssystemer · leksjon

Sikker lagring av betalingsmetoder (tokener)

Lær anbefalte fremgangsmåter for sikker innsamling og lagring av kundenes betalingsopplysninger ved hjelp av Stripes tokenisering.

Leksjon 1 av 411 trinn

Sikker lagring av betalingsmetoder (tokener) er en gratis leksjon i Betalinger med Stripe og SaaS-faktureringssystemer på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Betalinger med Stripe og SaaS-faktureringssystemer, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Betalinger med Stripe og SaaS-faktureringssystemer inneholder totalt 4 leksjoner.

Grunnleggende om betalingssikkerhet

Det er et stort ansvar å håndtere kundenes betalingsinformasjon! Et datainnbrudd kan skade virksomhetens omdømme alvorlig og føre til betydelige økonomiske straffer.

I denne leksjonen ser vi på hvordan du håndterer betalingsmetoder på en sikker måte ved hjelp av Stripes tokenisering, slik at både kundene og virksomheten beskyttes.

Faren ved rå kortdata

Det er svært risikabelt å lagre rå kredittkortnumre, utløpsdatoer og CVV-koder direkte på serverne Deres. Det gjør Dem til et attraktivt mål for hackere.

  • Høy risiko: Alvorlige sikkerhetsbrudd.
  • PCI DSS: Krever streng overholdelse, noe som er komplekst og kostbart.
  • Ansvar: De er ansvarlige for å beskytte disse sensitive dataene.

Heldigvis tilbyr Stripe et langt sikrere alternativ: tokenisering.

Introduksjon til tokenisering

Tokenisering er prosessen med å konvertere sensitive data til en ikke-sensitiv tegnstreng som kalles et «token». Tenk på det som en sikker plassholder.

Når en kunde oppgir kortopplysningene sine, fanger Stripe dem opp direkte. I stedet for å sende de rå kortdataene til serveren Deres sender Stripe tilbake et unikt token som bare kan brukes én gang.

Stripes tokeniseringsprosess

Slik fungerer tokenisering med Stripe:

  1. Kunden oppgir kortopplysningene i et skjema (drevet av Stripe.js).
  2. Stripe.js sender opplysningene direkte til Stripes sikre servere.
  3. Stripe returnerer en unik, ikke-sensitiv PaymentMethod-ID til applikasjonen på klientsiden.
  4. Applikasjonen på klientsiden sender denne PaymentMethod-ID-en til serveren Deres.
  5. Serveren Deres bruker deretter denne ID-en til å opprette belastninger eller knytte den til en kunde, uten noen gang å håndtere rå kortdata.

Oppretting av token på klientsiden

Stripe.js og Stripe Elements gjør tokenisering på klientsiden enkelt. De bygger inn sikre UI-komponenter som håndterer kortinndata og sender data direkte til Stripe.

Slik kan De forenklet sette opp et kortelement og bekrefte en betalingsmetode på klientsiden:

<!-- index.html -->
<form id="payment-form">
  <div id="card-element"><!-- Stripe Elements will mount here --></div>
  <button id="submit-button">Save Card</button>
</form>

<script src="https://js.stripe.com/v3/"></script>
<script>
  const stripe = Stripe('pk_test_YOUR_PUBLISHABLE_KEY');
  const elements = stripe.elements();
  const cardElement = elements.create('card');
  cardElement.mount('#card-element');

  const form = document.getElementById('payment-form');
  form.addEventListener('submit', async (event) => {
    event.preventDefault();
    const { setupIntent, error } = await stripe.confirmCardSetup(
      '{{CLIENT_SECRET_FROM_SERVER}}', // This comes from your server
      {
        payment_method: {
          card: cardElement,
        },
      }
    );

    if (error) {
      console.error(error.message);
    } else {
      // payment_method.id can now be sent to your server
      console.log('PaymentMethod ID:', setupIntent.payment_method);
    }
  });
</script>

Knytte til kunde

Når De har PaymentMethod-ID-en fra klienten, sender De den til serveren. Serveren knytter deretter denne PaymentMethod-en til et Stripe-Customer-objekt.

Dette er avgjørende for gjentakende betalinger eller når kunder skal kunne lagre kort for fremtidig bruk. Customer-objektet fungerer som et sikkert hvelv for betalingsopplysningene deres.

Prøv å kjøre dette Python-eksempelet:

import stripe

stripe.api_key = "sk_test_YOUR_SECRET_KEY"

def attach_payment_method_to_customer(customer_id, payment_method_id):
    try:
        # Retrieve the customer
        customer = stripe.Customer.retrieve(customer_id)

        # Attach the PaymentMethod to the customer
        stripe.PaymentMethod.attach(
            payment_method_id,
            customer=customer.id,
        )
        print(f"PaymentMethod {payment_method_id} attached to customer {customer.id}")

        # You can also set it as the default payment method for invoices
        stripe.Customer.modify(
            customer.id,
            invoice_settings={
                "default_payment_method": payment_method_id,
            },
        )
        print(f"Set {payment_method_id} as default for customer {customer.id}")
        return True
    except stripe.error.StripeError as e:
        print(f"Error attaching PaymentMethod: {e}")
        return False

# --- Example Usage ---
if __name__ == "__main__":
    # In a real app, you'd get customer_id and payment_method_id from your frontend/database.
    # For demonstration, let's create a dummy customer and use a test PaymentMethod.
    # Replace 'pm_card_visa' with a real test PaymentMethod ID or one from your frontend.
    
    # 1. Create a new Customer (if one doesn't exist)
    try:
        new_customer = stripe.Customer.create(
            email="customer@example.com",
            description="Test Customer for Stored Cards"
        )
        test_customer_id = new_customer.id
        print(f"Created new customer: {test_customer_id}")
    except stripe.error.StripeError as e:
        print(f"Error creating customer: {e}")
        # If customer already exists with this email, retrieve it or handle error
        test_customer_id = "cus_NlQoY8Xf8Xf8Xf" # Replace with an existing customer ID for testing

    # 2. Use a test PaymentMethod ID (e.g., from Stripe's test card details)
    # This ID would typically come from your client-side via a SetupIntent.
    test_payment_method_id = "pm_card_visa" # A common test PM ID

    if test_customer_id:
        success = attach_payment_method_to_customer(test_customer_id, test_payment_method_id)
        if success:
            print("Successfully demonstrated attaching PaymentMethod.")
        else:
            print("Failed to attach PaymentMethod.")

Kundeobjekter: Sikkert hvelv

Stripes Customer-objekt er mer enn bare en kundeoppføring; det er en sikker beholder for alle betalingsmetodene, abonnementene og fakturahistorikken deres.

  • PCI-samsvar: Stripe håndterer de komplekse PCI DSS-kravene for lagring av kortdata.
  • Gjenbruk: Belast kunder enkelt senere uten å be om kortopplysningene på nytt.
  • Flere betalingsmetoder: Lagre flere kort for én kunde.

Knytt alltid betalingsmetoder til et Customer-objekt for sikker, langsiktig lagring.

Belaste lagrede betalingsmetoder

Når en PaymentMethod er knyttet til en Customer, kan De opprette belastninger mot den når det er nødvendig, uten at kunden må oppgi opplysningene på nytt.

Dette er avgjørende for abonnementer, kjøp med ett klikk eller fakturering. De refererer ganske enkelt til Customer-ID-en og ønsket PaymentMethod-ID.

Prøv å kjøre dette eksempelet for å belaste et lagret kort:

import stripe

stripe.api_key = "sk_test_YOUR_SECRET_KEY"

def charge_stored_payment_method(customer_id, payment_method_id, amount, currency="usd"):
    try:
        # Create a PaymentIntent
        payment_intent = stripe.PaymentIntent.create(
            amount=amount,
            currency=currency,
            customer=customer_id,
            payment_method=payment_method_id,
            off_session=True, # Required for charging off-session
            confirm=True, # Confirm the payment immediately
        )

        if payment_intent.status == 'succeeded':
            print(f"Successfully charged {amount} {currency} using stored PaymentMethod {payment_method_id} for customer {customer_id}.")
            print(f"Payment Intent ID: {payment_intent.id}")
            return True
        else:
            print(f"PaymentIntent status: {payment_intent.status}")
            return False
    except stripe.error.StripeError as e:
        print(f"Error charging stored PaymentMethod: {e}")
        return False

# --- Example Usage ---
if __name__ == "__main__":
    # Replace with your actual customer and payment method IDs for testing
    # These would typically come from your database after a card has been saved.
    
    # Let's assume we have a customer and a default payment method from the previous step
    # For a real scenario, you'd fetch these from your own database.
    test_customer_id = "cus_NlQoY8Xf8Xf8Xf" # Replace with a valid customer ID
    test_payment_method_id = "pm_card_visa" # Replace with a valid PaymentMethod ID attached to the customer

    if test_customer_id and test_payment_method_id:
        charge_amount = 1000 # $10.00
        success = charge_stored_payment_method(
            test_customer_id,
            test_payment_method_id,
            charge_amount,
            "usd"
        )
        if success:
            print("Demonstrated charging a stored PaymentMethod.")
        else:
            print("Failed to charge stored PaymentMethod.")

PCI-samsvar og anbefalte fremgangsmåter

Ved å bruke Stripes tokenisering og Customer-objekter reduserer De betydelig arbeidet med å oppfylle PCI DSS-kravene (Payment Card Industry Data Security Standard).

  • Lagre aldri rådata: Serverne Deres skal aldri se eller lagre fullstendige kortnumre.
  • Bruk Stripe Elements: Benytt Stripes ferdigbygde UI-komponenter for innhenting av data på klientsiden.
  • Sikre API-nøkler: Beskytt de hemmelige API-nøklene Deres; eksponer dem aldri på klientsiden.
  • HTTPS overalt: Sørg for at all kommunikasjon er kryptert med HTTPS.

Kort kontroll: Tokensikkerhet

Test forståelsen Deres av sikker lagring av betalingsmetoder.

Oppsummering: Sikker betaling

I denne leksjonen har De utforsket hvor viktig det er å håndtere betalingsinformasjon på en sikker måte. De har lært om:

  • Risikoene ved å lagre rå kortdata.
  • Hvordan tokenisering med Stripe beskytter sensitive opplysninger.
  • Bruk av Stripe.js til å hente inn betalingsopplysninger på klientsiden.
  • Å knytte PaymentMethod-objekter til Customer-objekter for sikker og gjenbrukbar lagring.
  • Anbefalte fremgangsmåter for å opprettholde PCI-samsvar.

De er nå klare til å bygge sikrere betalingsflyter!

Gratis å komme i gang

Lær deg Betalinger med Stripe og SaaS-faktureringssystemer med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Sikker lagring av betalingsmetoder (tokener)» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Betalinger med Stripe og SaaS-faktureringssystemer, inkludert «Sikker lagring av betalingsmetoder (tokener)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Betalinger med Stripe og SaaS-faktureringssystemer inneholder totalt 4 leksjoner.

Hva lærer jeg i «Sikker lagring av betalingsmetoder (tokener)»?

Lær anbefalte fremgangsmåter for sikker innsamling og lagring av kundenes betalingsopplysninger ved hjelp av Stripes tokenisering. Du øver på Betalinger med Stripe og SaaS-faktureringssystemer med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Betalinger med Stripe og SaaS-faktureringssystemer?

Ingen tidligere erfaring er nødvendig. Betalinger med Stripe og SaaS-faktureringssystemer på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Sikker lagring av betalingsmetoder (tokener)»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Betalinger med Stripe og SaaS-faktureringssystemer-leksjonen?

Ja. Alle Betalinger med Stripe og SaaS-faktureringssystemer-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Sikker lagring av betalingsmetoder (tokener)
  2. Implementering av Strong Customer Authentication (SCA)
  3. Beste praksis for PCI-samsvar for utviklere
  4. Sikker verifisering av webhook-signaturer
← Tilbake til Betalinger med Stripe og SaaS-faktureringssystemer