Ik krijg van de betalingssite mollie een json reactie terug, bv
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
"totalCount": 280,
"offset": 0,
"count": 10,
"data": [
{
"id": "tr_7UhSN1zuXS",
"mode": "test",
"createdDatetime": "2014-06-05T08:29:39.0Z",
"status": "open",
"expiryPeriod": "PT15M",
"amount": 10.00,
"description": "My first payment",
"metadata": {
"order_id": "12345"
},
"locale": "nl",
"profileId": "pfl_QkEhN94Ba",
"links": {
"redirectUrl": "https://webshop.example.org/order/12345/"
}
},
{ ... },
{ ... }
],
"links": {
"first": "https://api.mollie.nl/v1/payments?count=10&offset=0",
"previous": null,
"next": "https://api.mollie.nl/v1/payments?count=10&offset=10",
"last": "https://api.mollie.nl/v1/payments?count=10&offset=270"
}
}

nu moet ik dat parsen in php, deze array in een variabele. maar dat wil niet zo goed

ik heb geprobeerd

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )


$decoded = json_decode($json);
var_dump($decoded);
$payment_id=$decoded=>id;
$order_id=$decoded=>metadata=>order_id;

hoe moet het wel?

lex
We hebben ook code-tags op het forum ;-)

Wat gaat er nu mis met deze code? Waar loop je op vast?
nou, ik hb nu op meerdere plaatsen een emailreactie ingevoerd, dus als het goed of fout gaat, maar als er iets gebeurt op de pagina, dan zou ik een mail moeten krijgen. en dan kan ik verder gaan, updaten enzo. maar eerst maar eens de pagina aan de gang krijgen.

het aanroepen van de betaalwijze doe ik hiermee en dat gaat goed, ga netjes naar mollie en ideal:


<?php
require_once 'Mollie/API/Autoloader.php';

$mollie = new Mollie_API_Client;
$mollie->setApiKey('test_sHkWPVSxt4QNuWs5p8FNpUygNnhtzf');

try
{
    $payment = $mollie->payments->create(
        array(
            'amount'      => $bedrag,
            'description' => 'Algenie Optie A',
            'redirectUrl' => 'http://www.algenie.eu/test2/bedankt.php',                   'webhookUrl'=>'http://www.algenie.eu/test2/webhook.php',
            'metadata'    => array(
                'order_id' => $order
            )
        )
    );

    /*

ik kom misschien niet op de webook.php maar waarom dan niet?
     * Send the customer off to complete the payment.
     */
    header("Location: " . $payment->getPaymentUrl());
    exit;
}
catch (Mollie_API_Exception $e)
{
    echo "API call failed: " . htmlspecialchars($e->getMessage()) . " on field " + htmlspecialchars($e->getField());
}
?>




Toevoeging op 05/08/2015 17:20:43:

dat stukje "ik kom misschien...." had onderaan moeten staan, staat niet op de site
Dat is PHP-commentaar en zie je niet.
puur om niet daarvoor op mijn kop te krijgen :-(

:-)

lex
De location wordt wel aangeroepen verder?
ja, webhook.php

require_once 'Mollie/API/Autoloader.php';

$mollie = new Mollie_API_Client;
$mollie->setApiKey('test_sHkWPVSxt4QNuWs5p8FNpUygNnhtzf');

try
{
$payment = $mollie->payments->create(
array(
'amount' => $bedrag,
'description' => 'Algenie Optie A',
'redirectUrl' => 'http://www.algenie.eu/test2/bedankt.php';, 'webhookUrl'=>'http://www.algenie.eu/test2/webhook.php';,
'metadata' => array(
'order_id' => $order
)
)
);

/*
* Send the customer off to complete the payment.
*/
header("Location: " . $payment->getPaymentUrl());
exit;
}
catch (Mollie_API_Exception $e)
{
echo "API call failed: " . htmlspecialchars($e->getMessage()) . " on field " + htmlspecialchars($e->getField());
}






Toevoeging op 05/08/2015 23:23:23:

Ik heb in een foutenlogboek gezien dat het niet lukt om webhook.php aan te roepen:


Rapportage fouten logboek
Filter op URL:
Toon hele lijst

URL Type Start / Laatste Pogingen
http://www.algenie.eu/test2/webhook.php
id=tr_qAZQQ9Ugyk api 05-08-2015 16:54
05-08-2015 21:22 10x rotate clockwise
http://www.algenie.eu/test2/webhook.php
id=tr_FHq5d2krp3 api 05-08-2015 16:53
05-08-2015 21:21 10x rotate clockwise

webhook.php staat in de map test2

dus, lijkt me, moet de fout in de inhoud van webhook.php zitten

ik hb na het decoderen van de json string een updateopdracht gezet van een getalletje op een plaats, dus geen uitkomsten van de string gebruikt en dat werkt niet. de fout moet dan daarboven zitten

misschien een puntkomma waar het niet mag? typefout? maar ik zie de fout niet

<?php

$loginstring = "";
$host = "localhost";
$servermelding = "Helaas kan op dit moment geen verbinding met de database worden gemaakt, probeer het later nog eens";
$database = "algen23_crowd";
$user="algen23";
$password = "8x9S7sYO";
$t = @mysql_connect ($host, $user, $password) or die ($servermelding);

// INCLUDE CONNECTIE
try
{
// INCLUDE MOLLIE, ZIE GITHUB LINK
require_once 'Mollie/API/Autoloader.php';
$mollie = new Mollie_API_Client;
$mollie->setApiKey('test_sHkWPVSxt4QNuWs5p8FNpUygNnhtzf');

$payment = $mollie->payments->get($_POST["id"]);
$order_id = $payment->metadata->order_id;
$Mode = $payment->mode;
$ID = $payment->id;
$CrDate = $payment->createdDatetime;
$PDate = $payment->paidDatetime;
$CaDate = $payment->cancelledDatetime;
$EDate = $payment->expiredDatetime;
$Amount = $payment->amount;
$Description = $payment->description;
$Method = $payment->method;
$Details_Name = $payment->details->consumerName;
$Links = $payment->links->redirectUrl;
$Details_Account = $payment->details->consumerAccount;

// Update HIER je order, niet in het isPaid() deel, want stel, een betaling is geannuleerd (cancelled), dan wil je die ook updaten.

$update="update betaling set (payment_id='4555') where volgnummer='35'";
$res=mysql_query ($update);

if ($payment->isPaid() == TRUE)
{
// Wat je hier kunt doen is jezelf, je leverancier en/of je klant mailen
$to = '[email protected]';
$from = 'From: betaalwebhookpagina';
$subject = 'succes';
$message = 'zo gaat i goed';

mail($to, $subject, $message, $from);
}
elseif ($payment->isOpen() == FALSE)
{
$to = '[email protected]';
$from = 'From: betaalwebhookpagina';
$subject = 'nee';
$message = 'zo gaat i slecht';

mail($to, $subject, $message, $from);
}
}
catch (Mollie_API_Exception $e)
{
echo "API call failed: " . htmlspecialchars($e->getMessage());
error_log("Big trouble!", 1,
"[email protected]");
}

Response

HTTP/1.1 200 OK
?>
</body>
</html>
de info achter // staat in 1 lange zin,niet afgebroken zoals het scherm hier doet

Toevoeging op 06/08/2015 09:08:27:

HET LUKT!

geen idee waarom, maar vooral stilzetten en niet bewegen en verder gaan :-)

bedankt

Reageren