PHP Mollie iDeal probleem
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)
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
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]
/*
* 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]
Geen idee, maar wat gebeurt er precies, en wat verwacht je? Krijg je foutmeldingen?
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 -
Staan die twee // op regel 19 ook in je live script of staan die er hier per ongeluk voor?
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 -
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.
- Betaling geslaagd
- Geannuleerd
- Geen status
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.
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.
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.
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:
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)
Ik gebruik uiteraard de standaard Mollie PHP lib.
Johan de wit op 05/03/2015 13:22:55:
Helaas zijn die dingen onduidelijk en er is ook geen support want hun weigeren om te helpen.
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.
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)
Gewijzigd op 05/03/2015 17:14:46 door Daan Slagter
Dank allemaal voor de hulp :)
Gewijzigd op 05/03/2015 20:04:02 door - Marco -
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.