Ci-dessous un exemple de code pour "Paytrail_Module_Rest.php", un ensemble de classes pour interagir avec une API de repos pour une passerelle de paiement. Certaines des classes peuvent être instanciées à l'avance telles que (Paytrail_Module_rest qui contient des informations d'identification), mais certaines doivent être instanciées avec des informations uniquement disponibles dans le contrôleur (par exemple Paytrail_Module_Rest_Payment_S1 qui définit les détails de paiement tels que le prix)Comment injecter un service plus complexe dans slim3 tel que Paytrail
Quelqu'un suggère une façon propre de l'injecter dans slim3? Je ne vois pas de bon moyen de le faire avec les méthodes d'injection standard.
$urlset = new\App\Service\Paytrail\Paytrail_Module_Rest_Urlset(
"https://www.demoshop.com/sv/success", // return address for successful payment
"https://www.demoshop.com/sv/failure", // return address for failed payment
"https://www.demoshop.com/sv/notify", // address for payment confirmation from Paytrail server
"" // pending url not in use
);
$orderNumber = '1';
$price = 99.00;
$payment = new \App\Service\Paytrail\Paytrail_Module_Rest_Payment_S1($orderNumber, $urlset, $price);
$payment->setLocale('en_US');
$module = new \App\Service\Paytrail\Paytrail_Module_Rest(13466, '6pKF4jkv97zmqBJ3ZL8gUw5DfT2NMQ');
try {
$result = $module->processPayment($payment);
}
catch (\App\Service\Paytrail\Paytrail_Exception $e) {
die('Error in creating payment to Paytrail service:'. $e->getMessage());
}
echo $result->getUrl();
(références énumérées ici sont des informations d'identification de test publics)
Slim prend en charge toute implémentation de message HTTP PSR-7. Vous pourriez écrire un intergiciel pour cela et consommer les attributs dans l'action. – DanielO