2017-01-25 2 views
1

Nach mehreren Recherchen bin ich zu dem Schluss gekommen, dass Stripe Connect Dokumentation auf Django nicht wirklich eingerichtet war. Ich habe mich bemüht, mit dem Standalone-Paket (OAuth) einen einfachen Marktplatz zu erstellen.Wie wird Stripe Connect auf Django konfiguriert, um Gebühren für Transaktionen zu sammeln?

Das Ziel der plateforme ist es, Benutzer Transaktionen zwischen einander zu ermöglichen und Gebühren für jede Gebühren zu sammeln. Um dies zu erreichen, verwende ich django-allauth und Streifen.

Ich habe django-allauth eingerichtet, damit Benutzer bereits ein Konto auf stripe erstellen und sich auf meiner Website anmelden können. Das Problem, mit dem ich mich jetzt konfrontiert sehe, ist, wie man Benutzer untereinander auflädt.

ist hier der Fehler ich erhalte, wenn ich versuche, eine Zahlung von zwei verschiedenen Konten zu machen, UserA (Kunden) zu UserB (Verlag/Verkäufer): ist

stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.

Hier meine Ansichten

customer_id = request.user.profile.stripe_id 

if request.method == 'POST': 
    try: 
     gig = Gig.objects.get(id=request.POST.get('gig_id')) 
    except Gig.DoesNotExist: 
     return redirect('/') 


    token = request.POST['stripeToken'] 

    # Create a charge: this will charge the user's card 
    try: 
     customer = stripe.Customer.retrieve(customer_id) 
     customer.sources.create(source=token) 

     destination_id = gig.user.socialaccount_set.get().uid 

     charge = stripe.Charge.create(
      amount=5000, # Amount in cents 
      currency="chf", 
      customer=customer, 
      description=gig.title, 
      application_fee=123, 
      destination=destination_id, #'acct_**************' 
     ) 

    except stripe.error.CardError as e: 
     # The card has been declined 
     pass 

Gig ist mein Produktmodell und Profile ist mein Profilmodell, wo ich halten stripe_id

Ich habe die Dokumentation gelesen und stelle das Ziel des Kontos mit der Ziel-ID des Verkäufers bereit. Fehle ich etwas? Warum bekomme ich diesen Fehler?

Antwort

3

Erfolg, die erste Zahlung ging durch! Für die anderen Menschen, die Einrichtung Streifen kämpfen verbinden wird:

Hier ist eine kurze Anleitung, was Sie für das Standalone-Paket haben müssen, hier ist das, was ich Django-allauth und Streifen.

Dinge müssen Sie für die es auf Testmodus wissen, arbeiten:

ein. konfigurieren Sie Django-Allauth mit Streifen

b. Sie können nicht das Ziel mit dem Admin-Konto Ziel-ID gesetzt, wenn es derjenige ist Sie die App erstellt haben sonst werden Sie diese Fehlermeldung erhalten:

stripe.error.InvalidRequestError: Request req_*************: The 'destination' param cannot be set to your own account.

c. Sie müssen sicherstellen, dass Sie diesen Code auf Ihre Einstellungen setzen, wie Sie vorgehen können nur Gebühren oder Transfers zu tun, wenn der Umfang, diesen Code in Ihre settings.py setzen auf READ_WRITE gesetzt

SOCIALACCOUNT_PROVIDERS = { 
    'stripe': { 
     'SCOPE': ['read_write'], 
    } 
} 

d. Geben Sie Ihrem Profilmodell eine stripe_id, um jedem verbundenen Benutzer eine eindeutige ID zu geben.

e. Zeigen Sie das Bankformular auf der Vorlage an.

Wissen, dass Sie wahrscheinlich einen zweiten Testaccount erstellen müssen, um Ihre Zahlung im Dev-Modus zu tätigen, da Sie das Administratorkonto nicht verwenden können.

Zögern Sie nicht, den saves.py-Code in der Frage zu verwenden, die keine Fehler enthält.

Genießen Sie stripe connect auf Ihrem Marktplatz!

+0

Danke! Deine Antwort hat mir Stunden des Fluchens auf meinem Laptop-Bildschirm erspart ... –

+0

@KimmoHintikka Froh, dass ich helfen kann :) Ich habe stundenlang darauf geschimpft, als ich an diesem Projekt beteiligt war – Lindow

Verwandte Themen