Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.2 kB
5
Indexable
public function process_payment($order_id) {
    global $woocommerce;

    $order = new WC_Order($order_id);

    // Aqui você deve implementar a lógica de pagamento com a Cielo LIO

    // Suponha que $payment_method1 e $payment_method2 são os dois métodos de pagamento escolhidos pelo cliente
    $payment_method1 = $_POST['payment_method1'];
    $payment_method2 = $_POST['payment_method2'];

    // Suponha que $amount1 e $amount2 são os montantes a serem pagos com cada método de pagamento
    $amount1 = $_POST['amount1'];
    $amount2 = $_POST['amount2'];

    // Aqui você deve chamar a API da Cielo LIO para processar o pagamento com $payment_method1
    $response1 = $this->process_cielo_payment($payment_method1, $amount1);

    // Se o primeiro pagamento foi bem-sucedido, processe o segundo pagamento
    if ($response1->status == 'success') {
        $response2 = $this->process_cielo_payment($payment_method2, $amount2);

        if ($response2->status == 'success') {
            // Se ambos os pagamentos foram bem-sucedidos, marque o pedido como "em processamento" (pagamento completo ou pagamento aceito)
            $order->update_status('processing');

            // Reduza o estoque
            $order->reduce_order_stock();

            // Remova o carrinho
            $woocommerce->cart->empty_cart();

            // Retorne na página de obrigado
            return array(
                'result' => 'success',
                'redirect' => $this->get_return_url($order)
            );
        } else {
            // Se o segundo pagamento falhou, você pode escolher reverter o primeiro pagamento ou deixar como está
            // Aqui estamos revertendo o primeiro pagamento
            $this->reverse_cielo_payment($response1->transaction_id);

            // Retorne um erro para o cliente
            wc_add_notice('Ocorreu um erro ao processar seu pagamento. Por favor, tente novamente.', 'error');
            return;
        }
    } else {
        // Se o primeiro pagamento falhou, retorne um erro para o cliente
        wc_add_notice('Ocorreu um erro ao processar seu pagamento. Por favor, tente novamente.', 'error');
        return;
    }
}