Jump to content

Remboursement via Stripe Api / Refund by Stripe Api


Recommended Posts

Version prestashop : 1.7.3.3

Bonjour à tous,

J'essaie de développer un module permettant d'effectuer le remboursement d'une commande faites avec Stripe au travers des hooks d'annulation de commande. J'ai recherché, mais je n'ai pas trouvé de solutions à l'heure actuelle ? L'idée étant de ne plus devoir passer systématiquement par le dashboard de Stripe.

J'ai tout d'abord fait un premier essai concluant en liant l'action de remboursement à l'api lorsque je visualise une commande.

Malheureusement je bloque sur un point pour lequel vous aurez peut-être une solution lorsque j'utilise le hook de remboursement.

A l’exécution de l'action, le seul retour que j'ai est une page blanche, et pas de trace d'erreur ni dans les logs de prestashop, ni sur ceux du serveur. A force de fouiner un peu, j'ai trouvé que le problème était au niveau de la classe Stripe, lorsqu'il définit l'ApiKey, mais le même code fonctionne très bien sur l'action "HookDisplayAdminOrder", donc je sèche...Si quelqu'un a une solution ou une explication, je suis preneur 😅

Merci beaucoup !

English :

Hello everyone,

I'm trying to develop a module to refund an order made with Stripe through the order cancellation hooks. I've been looking for it, but I haven't found any solutions yet? The idea is to no longer have to systematically go through the Stripe dashboard.

I first tried to link the refund action to the api when I view an order.

Unfortunately I'm stuck on a point that you may have a solution for when I use the refund hook.

When the action is executed, the only return I get is a blank page, and no trace of error in either the prestashop or server logs. I found that the problem was in the Stripe class, when it defines the ApiKey, but the same code works fine on the "HookDisplayAdminOrder" action, so I'm out of luck...If anyone has a solution or an explanation, I'm interested 😅

Thanks a lot!

    public function hookActionProductCancel($params)
    {
        if (!Configuration::get('MP_DEBUG_MODE')) {
            $privateKey = Configuration::get('MP_STRIPE_TEST_SECRET_KEY');
        } else {
            $privateKey = Configuration::get('MP_STRIPE_LIVE_SECRET_KEY');
        }
        $logger = new FileLogger(0); //0 == debug level, logDebug() won’t work without this.
        $logger->setFilename(_PS_ROOT_DIR_."/log/debug.log");
     
        $order = new Order($params['id_order']);
       
        try {
            Stripe::setApiKey($privateKey);
            $order_payment = OrderPayment::getByOrderId($order->id);//on declanche le remboursement
            Refund::create([
                'payment_intent' => $order_payment[0]->transaction_id,
                'amount' => Tools::ps_round($order->getTotalProductsWithTaxes(),2)*100,
            ]);
            $order->setCurrentState((int)Configuration::get('PS_OS_REFUND'));

        } catch (Exception $e){
            $logger->logDebug($e);
        }
        
    }

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...