Viincenttt / MollieApi

This project allows you to easily add the Mollie payment provider to your application.
MIT License
150 stars 85 forks source link

Webhook en webforms example #63

Closed earrp closed 6 years ago

earrp commented 6 years ago

Hallo Vincent,

Ik maak nu gebruik van de Mollie betaal API. Ik heb een C# webforms website en heb dit getest maar er zijn nog wat vragen.

Ik zie dat deze API niet direct van een webhook gebruik lijkt te maken of het moet al onderwater zijn. Ik geef aan de API alleen een bedrag, beschrijving en redirecturl mee.

Is de webhook idd niet perse nodig? Het lijkt zo te werken.

Hieronder de code op de betaalpagina. Wellicht kan je tips geven?

        // Creeer betaling
        PaymentClient paymentClient = new PaymentClient("test_xxx");
        PaymentRequest paymentRequest = new PaymentRequest()
        {
            Amount = Convert.ToDecimal(bedrag.Text),
            Description = beschrijving.Text,
            RedirectUrl = "https://kinderopvangkerkrade.nl/nl/MollieCheckBedankpagina.aspx"
        };

        PaymentResponse paymentResponse = paymentClient.CreatePaymentAsync(paymentRequest).Result;
        var status = paymentResponse.Status;
        Session["betaling"] = paymentClient;
        Session["betalingId"] = paymentResponse.Id;

        // Start betaling
        PaymentResponse result = paymentClient.GetPaymentAsync(paymentResponse.Id).Result;
        var url = result.Links.PaymentUrl;

Hieronder de code op de bedankpagina:

        var idBetaling = Session["betalingId"].ToString();
        PaymentClient paymentClient = (Mollie.Api.Client.PaymentClient) Session["betaling"];
        PaymentResponse result = paymentClient.GetPaymentAsync(idBetaling).Result;

        betalingId.Text = result.Id;
        betalingStatus.Text = result.Status.ToString();

        if (result.Status.ToString().ToLower() == "paid")
        {
            melding.Text = "Betaling succesvol.";
        }
        else
        {
            melding.Text = "Betaling mislukt!";
        }

Is de werking correct zover je kan zien? Ik heb dus geen webhook maar ik kan op de bedankpagina toch de status opvragen. Ik sla het betaalobject op in een sessie en die blijft over de betaling bij Mollie heen dan ook behouden tot op de bedankpagina.

Viincenttt commented 6 years ago

Hoi earrp,

De webhook wordt inderdaad niet geïmplementeerd door deze API. Indien je gebruik wilt maken van een webhook, dan dien je dit zelf te implementeren.

Een webhook kan handig zijn als je een bepaalde actie wilt uitvoeren zodra de status van een betaling veranderd. Dit kan nuttig zijn als je betaalmogelijkheden hebt ingesteld die er enkele uren of dagen over doen om aan te komen.

earrp commented 6 years ago

Hallo Vincent,

Bedankt voor de snelle reactie!

Maar begrijp ik het goed dat de webhook niet verplicht is en dat het ook goed functioneert zonder deze webhook? Ik dacht dat je verplicht een OK moest sturen op de webhook.

Maar als het zonder kan dan is dit voor ons prima.

Klopt het vb zoals ik gepost heb? Is het goed om het payment object in een session op te slaan om dan te gebruiken op de bedankpagina?

Mvg, Eric

From: Vincent Kok notifications@github.com Sent: dinsdag 26 juni 2018 15:28 To: Viincenttt/MollieApi MollieApi@noreply.github.com Cc: Jong, E d (Eric) Author author@noreply.github.com Subject: Re: [Viincenttt/MollieApi] Webhook en webforms example (#63)

Hoi earrp,

De webhook wordt inderdaad niet geïmplementeerd door deze API. Indien je gebruik wilt maken van een webhook, dan dien je dit zelf te maken.

Een webhook kan handig zijn als je een bepaalde actie wilt uitvoeren zodra de status van een betaling veranderd. Dit kan nuttig zijn als je betaalmogelijkheden hebt ingesteld die er enkele uren of dagen over doen om aan te komen.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Viincenttt/MollieApi/issues/63#issuecomment-400308139, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AUJQWP4AH7jOoNmU2BLrIrVT1GTkA46zks5uAjbrgaJpZM4U2ZJO.

Viincenttt commented 6 years ago

Het kan zonder webhook, maar als de betaling dan om wat voor reden dan ook vertraging heeft dan krijg je de status "open" terug op de bedankpagina. Ik raad daarom aan om alsnog een webhook te gebruiken.

Hoe je omgaat met het opslaan van de betalingen en het bijhouden van de status is afhankelijk van de requirements van de applicatie :)

earrp commented 6 years ago

Ok bedankt.

Is een vrij eenvoudige betaling van een activiteit wat men voor een evenement moet betalen. Ik zag even geen andere optie om op de bedankpagina de gegevens op te halen van de lopende betaling, want als ik de testkey opnieuw aanboodt en dan het id gaf kreeg ik een authentication error.

Als ik het payment object opsla in een session variabele dan kan ik deze op de bedanktpagina gebruiken zonder een nieuw payment object aan te moeten maken. Dit lijkt te werken maar ik vroeg me af of dit in alle gevallen werkt en of dit op een andere manier beter af te handelen is op de bedankpagina.

Ik zal idd wel controleren op de open status op de bedankpagina en dan aangeven dat de betaling nog niet verwerkt is. Dit kan de organisatie dan zelf bij de betalingen controleren en klanten alsnog een mail sturen.

Mvg, Eric

From: Vincent Kok notifications@github.com Sent: dinsdag 26 juni 2018 15:41 To: Viincenttt/MollieApi MollieApi@noreply.github.com Cc: Jong, E d (Eric) ; Author author@noreply.github.com Subject: Re: [Viincenttt/MollieApi] Webhook en webforms example (#63)

Het kan zonder webhook, maar als de betaling dan om wat voor reden dan ook vertraging heeft dan krijg je de status "open" terug op de bedankpagina. Ik raad daarom aan om alsnog een webhook te gebruiken.

Hoe je omgaat met het opslaan van de betalingen en het bijhouden van de status is afhankelijk van de requirements van de applicatie :)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Viincenttt/MollieApi/issues/63#issuecomment-400312531, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AUJQWPqPeBNcBwQwmgxoCFg_lQH4sp2fks5uAjnagaJpZM4U2ZJO.

earrp commented 6 years ago

Hallo Vinctent nog 1 vraag, hoe kan ik op een bedankpagina de status opvragen van een specifieke betaling als ik het id heb? Als ik een nieuwe paymentClient aanmaak met de apikey en het wil uitvragen met paymentClient.CreatePaymentAsync(paymentRequest).Result, dan krijg ik een authentication error. Is er een andere manier om de status van een betaling met een id op de vragen?

Er is natuurlijk de hele lijst via ListResponse payments = paymentClient.GetPaymentListAsync(0,250).Result; maar dan moet je zoeken. Kan dit eenvoudiger?

Mvg, Eric

lgoudriaan commented 6 years ago

Hey Earrp,

Om een enkele betaling op te halen kun je het beste gebruik maken van de GetPaymentAsync https://github.com/Viincenttt/MollieApi/blob/d2623ef40a52608e747f9de866a4052ca494bf87/Mollie.Api/Client/PaymentClient.cs#L23

Succes! :)

earrp commented 6 years ago

Ok werkt idd prima nu, bedankt. Alleen nog een probleem met de datum en tijd die ik terugkrijg. De datum klopt maar de uren lopen bij alle betalingen die ik als data terugkrijg precies 2 uur achter. Ik heb de tijd al in C# via Now opgevraagd en de server tijd lijkt goed te staan. Mollie issue of toch nog iets vanuit de API wellicht? Nog iemand problemen mee gehad?

lgoudriaan commented 6 years ago

Goed om te horen!

Ik kan even geen link vinden naar de documentatie maar als ik het goed heb is de tijd in UTC.