Untitled
unknown
plain_text
2 months ago
2.2 kB
4
Indexable
Never
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; } }