PHP Mollie iDeal probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Marco -

- Marco -

05/03/2015 09:43:53
Quote Anchor link
Hallo,

ik zit met het volgende probleem, ik ben bezig met een simpele webshop waar je kan afrekenen met iDeal d.m.v. de API van Mollie.

Op de productpagina zie je een overzicht van de producten en heb je per product een 'buy now' button. Als je erop klikt word je netjes doorgestuurd naar de mollie die het betaalproces afhandelt, het moment dat je op de knop klikt wordt er ook een record aangemaakt in de tabel genaamd 'webshop_status' met het orderID en de status wat beiden wordt aangemaakt / opgehaald door de api van mollie.

Nadat je een test betaling hebt gedaan wordt je teruggestuurd naar 'return-page.php' waar je 'bedankt' etc ofzo gaat zien :p

Het probleem is dat je ook een script moet maken wat mollie aanroept (webhook) als er een statusupdate is, deze webhook wordt dus aangeroepen door mollie het moment dat de klant betaald heeft.

Dit script heb ik al af (met dank aan wat voorbeeld code van mollie) maar ik krijg de webhook niet werkend. Ik krijg ook geen error te zien aangezien ik niet weet hoe mollie het script aanroept etc.

Ik heb de code van bestand wat mollie aanroept (webhook.php) hieronder toegevoegd.

Weet iemand wat er hier fout gaat?

- Marco

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
/*
 * Example 2 - How to verify Mollie API Payments in a webhook.
 */


try
{
    include "../include/dbconnect.php";
    /*
     * Initialize the Mollie API library with your API key.
     *
     * See: https://www.mollie.nl/beheer/account/profielen/
     */

    include "../mollie-api-php-1.1.6/examples/initialize.php";

    /*
     * Retrieve the payment's current state.
     */
   // $payment  = $mollie->payments->get($_POST["id"]);

    $order_id = $payment->metadata->order_id;

    /*
     * Update the order in the database.
     */

    $act_status = $payment->status;

    if ($payment->isPaid() == TRUE)
    {

        mysql_query("UPDATE webshop_status SET status='paid' WHERE orderID='$order_id'");
        /*
         * At this point you'd probably want to start the process of delivering the product to the customer.
         */

    }
    elseif ($payment->isOpen() == FALSE)
    {

        mysql_query("UPDATE webshop_status SET status='$act_status' WHERE orderID='$order_id'");
        /*
         * The payment isn't paid and isn't open anymore. We can assume it was aborted.
         */

    }
}

catch (Mollie_API_Exception $e)
{

    echo "API call failed: " . htmlspecialchars($e->getMessage());
}
[
/quote]
 
PHP hulp

PHP hulp

26/04/2024 23:36:31
 
- Ariën  -
Beheerder

- Ariën -

05/03/2015 09:46:23
Quote Anchor link
Geen idee, maar wat gebeurt er precies, en wat verwacht je? Krijg je foutmeldingen?
 
- Marco -

- Marco -

05/03/2015 09:58:23
Quote Anchor link
Wat er gebeurd is dat mollie de webhook WEL aanroept (getest met een simpele insert als je de pagina alleen al bezoekt) maar daarna gebeurd er niks meer mee denk ik. Als ik zelf naar de pagina ga krijg ik de volgende error:

Quote:
Notice: Undefined index: id in /include/webhook.php on line 19 API call failed: Invalid payment ID: ''. A payment ID should start with 'tr_'.


Maar dat komt denk ik omdat ik alleen de url bezoek en niet zoals mollie post variablen toevoeg.

Maar heel mijn probleem is dus dat ik geen error meldingen kan zien omdat mollie het script aanroept en ik zelf niet.
Gewijzigd op 05/03/2015 10:32:02 door - Marco -
 
- Mark -

- Mark -

05/03/2015 10:17:02
Quote Anchor link
Staan die twee // op regel 19 ook in je live script of staan die er hier per ongeluk voor?
 
- Marco -

- Marco -

05/03/2015 10:29:56
Quote Anchor link
Op mijn live script staan die er niet voor, die ben ik net vergeten weg te halen toen ik wat dingen aan het testen was :p

Heb ook de error melding in mijn post hierboven aangepast aangezien ik de // was vergeten weg te halen gaf het andere errors xD
En deze error geeft hij dus denk ik omdat ik niks naar die url post maar gewoon zelf naar die url ga. Mollie post er wel wat naartoe (een hele array volgends mij)

https://www.mollie.com/nl/docs/webhook
Gewijzigd op 05/03/2015 10:34:51 door - Marco -
 
- Mark -

- Mark -

05/03/2015 10:45:25
Quote Anchor link
Op de website van Mollie staat het volgende.

Quote:
Ons systeem beschikt over een testmodus. Om een testbetaling te kunnen doen vul je in plaats van de live API key, de Test API key in in je website.


Het zou dus mogelijk moeten zijn om een test betaling te doen zonder dat het je daadwerkelijk geld kost maar pin me daar niet op vast. Het is helaas al weer meer dan vijf jaar geleden dat ik iets met Mollie heb gedaan dus het zal wel allemaal anders zijn vandaag de dag.

En ja, ze zullen inderdaad een hele rits aan parameters meegeven.
 
- Marco -

- Marco -

05/03/2015 10:47:58
Quote Anchor link
Ja ik heb ook de test API key gebruikt, op de betaling pagina kun je ook gewoon kiezen voor:
- Betaling geslaagd
- Geannuleerd
- Geen status
 
Daan Slagter

Daan Slagter

05/03/2015 12:21:50
Quote Anchor link
Hoi

Ik ben op dit moment ook bezig me t de mollie api als ik thuis ben kan ik jouw script even vergelijken met de jouwe om te kijken of ik het probleem zie.
 
Johan de wit

johan de wit

05/03/2015 13:22:55
Quote Anchor link
Daan Daan op 05/03/2015 12:21:50:
Hoi

Ik ben op dit moment ook bezig me t de mollie api als ik thuis ben kan ik jouw script even vergelijken met de jouwe om te kijken of ik het probleem zie.


Helaas zijn die dingen onduidelijk en er is ook geen support want hun weigeren om te helpen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/03/2015 13:28:34
Quote Anchor link
Marco,

Mollie heeft ook een api call waarmee je alle transacties kunt ophalen. Als je dit doet dan heb je een paar van die tr_ codes ofwel transactie id's. bovenaan je webhook script kun je dan voor de test heel stom het volgende doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
['id'] = 'tr_xxxxx';
?>


Nu kun je wel vanuit je browser het script aanroepen en gaat hij die transactie voor je ophalen. En jij kan zien of er fouten optreden.
Daarnaast kun je in het panel van Mollie ook een test uitvoeren of je script aangeroepen kan worden. Uit mijn hoofd gezegd dacht ik dat er wel een https:// verbinding vereist is.

Indien je er niet uitkomt die call die alle transacties teruggeeft dan kan ik vanavond even de code plaatsen.

Toevoeging op 05/03/2015 13:43:36:

Heb het al voor je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

require 'php/config.php';
require "vendor/autoload.php";

$mollie = new Mollie_API_Client;
$mollie->setApiKey($apiKey);

$payments = $mollie->payments->all();

print_r($payments);
?>


Ik gebruik uiteraard de standaard Mollie PHP lib.
 
Daan Slagter

Daan Slagter

05/03/2015 17:10:39
Quote Anchor link
Johan de wit op 05/03/2015 13:22:55:
Daan Daan op 05/03/2015 12:21:50:
Hoi

Ik ben op dit moment ook bezig me t de mollie api als ik thuis ben kan ik jouw script even vergelijken met de jouwe om te kijken of ik het probleem zie.


Helaas zijn die dingen onduidelijk en er is ook geen support want hun weigeren om te helpen.


Ik krijg anders duidelijke hulp als ik een vraag stel en ook de documentatie vind ik er erg duidelijk uitzien.

Marco

Ik heb even in mijn eigen script gekeken en het ziet er redelijk hetzelfde uit alleen ik controleer op de volgende manier of er betaald is of dat de status open is of expired:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if($payment->status == "paid"){
//Update met als status betaald.
}
elseif($payment->status == "open"){
//Update met als status open.
}
elseif($payment->status == "expired"){
//Update met als status expired.
}
?>
Gewijzigd op 05/03/2015 17:14:46 door Daan Slagter
 
- Marco -

- Marco -

05/03/2015 18:55:12
Quote Anchor link
Met die code werkt het wel!
Dank allemaal voor de hulp :)
Gewijzigd op 05/03/2015 20:04:02 door - Marco -
 
Ansar Media

Ansar Media

26/04/2015 19:06:46
Quote Anchor link
Hoi,

Ik ben momenteel met ehtzzeflde bezig en ben ook tegen dit probleem gekomen.
Kun je laten weten hoe ej dit ogpeslot hebt gekregen?

Ik krijg bij de Return pagina niet de status te zien, omdat het maar niet lukt om de $payment_id aan te roepen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.