public function register(Application $app)
 {
     $app['mp'] = $app->share(function () use($app) {
         $mp = new MP($app['id_client'], $app['id_client_secret']);
         $mp->sandbox_mode(TRUE);
         return $mp;
     });
 }
Ejemplo n.º 2
0
<?php

include_once '../../../config/config.inc.php';
include_once 'mercadopago.php';
if (isset($_REQUEST['topic']) && isset($_REQUEST['id'])) {
    $id = $_REQUEST['id'];
    $client_id = Db::getInstance()->getRow("SELECT value FROM " . _DB_PREFIX_ . "configuration WHERE name = 'mercadopago_CLIENT_ID'");
    $client_secret = Db::getInstance()->getRow("SELECT value FROM " . _DB_PREFIX_ . "configuration WHERE name = 'mercadopago_CLIENT_SECRET'");
    $sandbox = Db::getInstance()->getRow("SELECT value FROM " . _DB_PREFIX_ . "configuration WHERE name = 'mercadopago_SANDBOX'");
    $mp = new MP($client_id['value'], $client_secret['value']);
    $mp->sandbox_mode($sandbox['value'] == "active" ? true : false);
    $dados = $mp->get_payment_info($id);
    $dados = $dados['response'];
    $order_id = $dados['collection']['external_reference'];
    $order_status = $dados["collection"]["status"];
    switch ($order_status) {
        case 'approved':
            $nomestatus = "mercadopago_STATUS_1";
            break;
        case 'pending':
            $nomestatus = "mercadopago_STATUS_0";
            break;
        case 'in_process':
            $nomestatus = "mercadopago_STATUS_0";
            break;
        case 'reject':
            $nomestatus = "mercadopago_STATUS_2";
            break;
        case 'refunded':
            $nomestatus = "mercadopago_STATUS_2";
            break;
Ejemplo n.º 3
0
 public function retorno()
 {
     if (isset($_REQUEST['id'])) {
         $id = $_REQUEST['id'];
         $client_id = $this->config->get('mercadopago2_client_id');
         $client_secret = $this->config->get('mercadopago2_client_secret');
         $sandbox = $this->config->get('mercadopago2_sandbox') == 1 ? true : null;
         //$checkdata = New Shop($client_id,$client_secret);
         $mp = new MP($client_id, $client_secret);
         $mp->sandbox_mode($sandbox);
         //$dados = $checkdata->GetStatus($id);
         $dados = $mp->get_payment_info($id);
         $dados = $dados['response'];
         $order_id = $dados['collection']['external_reference'];
         $order_status = $dados['collection']['status'];
         $this->load->model('checkout/order');
         $order = $this->model_checkout_order->getOrder($order_id);
         if ($order['order_status_id'] == '0') {
             $this->model_checkout_order->confirm($order_id, $this->config->get('mercadopago_order_status_id'));
         }
         switch ($order_status) {
             case 'approved':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_completed'));
                 break;
             case 'pending':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_pending'));
                 break;
             case 'in_process':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_process'));
                 break;
             case 'reject':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_rejected'));
                 break;
             case 'refunded':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_refunded'));
                 break;
             case 'cancelled':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_cancelled'));
                 break;
             case 'in_metiation':
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_in_mediation'));
                 break;
             default:
                 $this->model_checkout_order->update($order_id, $this->config->get('mercadopago2_order_status_id_pending'));
                 break;
         }
         echo "ID: " . $id . " - Status: " . $order_status;
     }
 }
Ejemplo n.º 4
0
<?php

//define( 'SHORTINIT', true );
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/wp-load.php';
$payments_others = unserialize(get_option('carrental_available_payments_others'));
if (is_file(dirname(dirname(__FILE__)) . '/carrental-payments-mercadopago/mercadopago.php') && $payments_others && !empty($payments_others) && isset($payments_others['eway']) && $payments_others['eway']['enabled'] == 'yes') {
    require_once dirname(dirname(__FILE__)) . '/carrental-payments-mercadopago/mercadopago.php';
    $mp = new MP($payments_others['mercadopago']['client-id'], $payments_others['mercadopago']['client-secret']);
    $mp->sandbox_mode(false);
    try {
        $response = $mp->get_payment($_GET['id']);
        file_put_contents('mercadopago_ipn.log', print_r($response, true) . "\n\n-------------------------------------\n\n", FILE_APPEND);
    } catch (Exception $e) {
        file_put_contents('mercadopago_ipn.log', print_r($response, true) . "\n\n-------------------------------------\n\n", FILE_APPEND);
        file_put_contents('mercadopago_ipn.log', 'ERROR: ' . $e->getMessage() . "\n\n-------------------------------------\n\n", FILE_APPEND);
        exit;
    }
    //file_put_contents('mercadopago_ipn.log', print_r($response, true), FILE_APPEND . "\n\n-------------------------------------\n\n");
    if ($response) {
        if (isset($response['response']) && isset($response['response']['collection']) && isset($response['response']['collection']['status']) && $response['response']['collection']['status'] == 'approved') {
            // IPN response was "VERIFIED"
            list($payment_id, $lang) = explode('#', $response['response']['collection']['external_reference']);
            $wpdb->query($wpdb->prepare('UPDATE ' . CarRental::$db['booking'] . ' SET `paid_online` = ' . (double) $response['response']['collection']['total_paid_amount'] . ', `status` = 1 WHERE MD5(CONCAT(`id_order`, %s, `email`)) = %s', CarRental::$hash_salt, $payment_id));
            file_put_contents('mercadopago_ipn.log', '***VERIFIED*** - ' . $wpdb->prepare('UPDATE ' . CarRental::$db['booking'] . ' SET `paid_online` = ' . (double) $response['response']['collection']['total_paid_amount'] . ', `status` = 1 WHERE MD5(CONCAT(`id_order`, %s, `email`)) = %s', CarRental::$hash_salt, $payment_id), FILE_APPEND);
            // Send e-mail
            if (isset($lang) && !empty($lang)) {
                $emailBody = get_option('carrental_reservation_email_' . $lang);
                if ($emailBody == '') {
                    $emailBody = get_option('carrental_reservation_email_en_GB');
                }
                $emailSubject = get_option('carrental_reservation_email_subject_' . $lang);
Ejemplo n.º 5
0
        }   
    break;    
    
    case "authorized_payment":
        
        $payment_info = $mp->get_authorized_payment($_GET["id"]);
        
        if ($payment_info["status"] == 200) {
            print_r($payment_info);
        }   
    break;
    
}
*/
if ($_GET["topic"] == "payment") {
    $mp->sandbox_mode(true);
    $payment_info = $mp->get_payment_info($_GET["id"]);
    // Show payment information
    if ($payment_info["status"] == 200) {
        $arquivo = fopen('result_ipn.php', 'a');
        fwrite($arquivo, "\n<tr><td>" . $payment_info["response"]["collection"]["id"] . "</td>");
        fwrite($arquivo, "\n<td>" . $payment_info["response"]["collection"]["status"] . "</td>");
        fwrite($arquivo, "\n<td>" . $payment_info["response"]["collection"]["status_detail"] . "</td>");
        fwrite($arquivo, "\n<td>" . $payment_info["response"]["collection"]["transaction_amount"] . "</td>");
        fwrite($arquivo, "\n</tr>");
        $arquivo = fopen('result_ipn.php', 'a');
        fwrite($arquivo, "\n<tr><td colspan='4'>  RESPONSE COLLECTION : " . json_encode($payment_info) . "</td>");
        fwrite($arquivo, "\n</tr>");
        fclose($arquivo);
        fclose($arquivo);
    }
Ejemplo n.º 6
0
Archivo: gmp.php Proyecto: sercba/gmp
include ROOTDIR . DIRECTORY_SEPARATOR . 'includes/gatewayfunctions.php';
include ROOTDIR . DIRECTORY_SEPARATOR . 'includes/invoicefunctions.php';
include "../gmp/mercadopago.php";
$gatewayModule = 'gmp';
# Enter your gateway module name here replacing template
/**
 * Ensure that the module is active before attempting to run any code
 */
$gateway = new Gateway();
if (!$gateway->isActiveGateway($gatewayModule) || !$gateway->load($gatewayModule)) {
    Terminus::getInstance()->doDie('Module not Active');
}
$GATEWAY = $gateway->getParams();
$mp = new MP($GATEWAY['client_id'], $GATEWAY['client_secret']);
if ($GATEWAY['testmode']) {
    $mp->sandbox_mode(TRUE);
}
$payment_info = $mp->get_payment_info($_GET["id"]);
$debug = array('json' => json_encode($payment_info));
$status = "0";
if ($payment_info["status"] == 200) {
    $data = $payment_info["response"]["collection"];
    if (!$data["sandbox"] && "approved" == $data["status"]) {
        $transactionId = $data["id"];
        $invoiceId = $data["external_reference"];
        $amount = (double) $data["transaction_amount"];
        $fee = (double) $data["transaction_amount"] - (double) $data["net_received_amount"];
        $status = "1";
    }
}
if ($status == "1") {
Ejemplo n.º 7
0
 public function retorno()
 {
     if (isset($this->request->get['collection_id'])) {
         if ($this->request->get['collection_id'] == 'null') {
             $order_id = $this->request->get['external_reference'];
             $this->load->model('checkout/order');
             $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_' . $this->request->get['status']), date('d/m/Y h:i'));
             return;
         }
         $ids = explode(',', $this->request->get['collection_id']);
         $client_id = $this->config->get('mp_standard_client_id');
         $client_secret = $this->config->get('mp_standard_client_secret');
         $sandbox = $this->config->get('mp_standard_sandbox') == 1 ? true : null;
         $mp = new MP($client_id, $client_secret);
         $mp->sandbox_mode($sandbox);
         foreach ($ids as $id) {
             $resposta = $mp->get_payment_info($id);
             $dados = $resposta['response'];
             $order_id = $dados['collection']['external_reference'];
             $order_status = $dados['collection']['status'];
             $this->load->model('checkout/order');
             $order = $this->model_checkout_order->getOrder($order_id);
             if ($order['order_status_id'] == '0') {
                 $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id'));
             }
             switch ($order_status) {
                 case 'approved':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_completed'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'pending':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_pending'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'in_process':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_process'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'reject':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_rejected'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'refunded':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_refunded'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'cancelled':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_cancelled'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 case 'in_metiation':
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_in_mediation'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
                 default:
                     $this->model_checkout_order->addOrderHistory($order_id, $this->config->get('mp_standard_order_status_id_pending'), date('d/m/Y h:i') . ' - ' . $dados['collection']['payment_method_id'] . ' - ' . $dados['collection']['net_received_amount']);
                     break;
             }
         }
     } else {
         error_log('id não setado na compra!!!');
     }
 }
Ejemplo n.º 8
0
 public function __construct($client_id, $client_secret, $sandbox)
 {
     $mp = new \MP($client_id, $client_secret);
     $mp->sandbox_mode($sandbox);
     $this->mp = $mp;
 }
Ejemplo n.º 9
0
 /**
  *	Booking 4/4
  */
 public static function carrental_confirm_reservation()
 {
     $order_hash = self::save_booking($_POST);
     if ((int) $_POST['paypal'] == 1 && (double) $_POST['total_rental'] > 0) {
         $paypal = get_option('carrental_paypal');
         $available_payments = unserialize(get_option('carrental_available_payments'));
         if (isset($available_payments) && isset($available_payments['carrental-paypal-security-deposit']) && (double) $available_payments['carrental-paypal-security-deposit'] > 0) {
             // if paypal security deposit is set
             $_POST['total_rental'] = $_POST['total_rental'] * ((double) $available_payments['carrental-paypal-security-deposit'] / 100);
             if (isset($available_payments['carrental-paypal-security-deposit-round'])) {
                 if ($available_payments['carrental-paypal-security-deposit-round'] == 'up') {
                     $_POST['total_rental'] = ceil($_POST['total_rental']);
                 } elseif ($available_payments['carrental-paypal-security-deposit-round'] == 'down') {
                     $_POST['total_rental'] = floor($_POST['total_rental']);
                 } else {
                     $_POST['total_rental'] = round($_POST['total_rental'], 2);
                 }
             } else {
                 $_POST['total_rental'] = round($_POST['total_rental'], 2);
             }
         }
         // Redirect to PayPal
         $query = array();
         $query['cmd'] = '_xclick';
         $query['business'] = $paypal;
         $query['email'] = $_POST['email'];
         $query['item_name'] = 'Car Rental Reservation #' . $order_hash;
         $query['quantity'] = 1;
         $query['return'] = home_url() . '?page=carrental&payment=paypal&summary=' . $order_hash;
         $query['item_number'] = $order_hash;
         $query['custom'] = isset($_SESSION['carrental_language']) && !empty($_SESSION['carrental_language']) ? $_SESSION['carrental_language'] : 'en_GB';
         $query['notify_url'] = CARRENTAL__PLUGIN_URL . 'paypal_ipn.php';
         $query['cancel_return'] = $_SERVER['HTTP_REFERER'] . '&paymentError=1';
         $query['amount'] = number_format((double) $_POST['total_rental'], 2, '.', '');
         $query['currency_code'] = $_POST['currency_code'];
         // Prepare query string
         $query_string = http_build_query($query);
         Header('Location: https://www.paypal.com/cgi-bin/webscr?' . $query_string);
         return;
     }
     // is it eway payment?
     if ($_POST['payment_option'] == 'eway' && (double) $_POST['total_rental'] > 0) {
         $payments_others = unserialize(get_option('carrental_available_payments_others'));
         if ($payments_others && !empty($payments_others) && isset($payments_others['eway']) && $payments_others['eway']['enabled'] == 'yes' && (double) $payments_others['eway']['security-deposit'] > 0) {
             $_POST['total_rental'] = $_POST['total_rental'] * ((double) $payments_others['eway']['security-deposit'] / 100);
             if (isset($payments_others['eway']['security-deposit-round'])) {
                 if ($payments_others['eway']['security-deposit-round'] == 'up') {
                     $_POST['total_rental'] = ceil($_POST['total_rental']);
                 } elseif ($payments_others['eway']['security-deposit-round'] == 'down') {
                     $_POST['total_rental'] = floor($_POST['total_rental']);
                 } else {
                     $_POST['total_rental'] = round($_POST['total_rental'], 2);
                 }
             } else {
                 $_POST['total_rental'] = round($_POST['total_rental'], 2);
             }
             require_once dirname(dirname(__FILE__)) . '/carrental-payments-eway/RapidAPI.php';
             $request = new eWAY\CreateAccessCodesSharedRequest();
             $request->Payment->TotalAmount = number_format((double) $_POST['total_rental'], 2, '.', '') * 100;
             // Amount is in cents, 100 = $1.00
             //$request->Payment->CurrencyCode = 'AUD';//$_POST['currency_code'];
             $request->Payment->InvoiceReference = $order_hash;
             $request->Options->Option[] = isset($_SESSION['carrental_language']) && !empty($_SESSION['carrental_language']) ? $_SESSION['carrental_language'] : 'en_GB';
             $request->RedirectUrl = CARRENTAL__PLUGIN_URL . 'eway_ipn.php';
             $request->CancelUrl = $_SERVER['HTTP_REFERER'] . '&ewayError=1';
             $service = new eWAY\RapidAPI($payments_others['eway']['api-key'], $payments_others['eway']['api-password']);
             //print_r($request);die();
             // Get the AccessCode
             $result = $service->CreateAccessCodesShared($request);
             if (!empty($result->Errors)) {
                 die(eWAY\ResponseCode::getMessage($result->Errors));
             }
             // Send the customer to eWAY to pay
             header("Location: " . $result->SharedPaymentUrl);
             exit;
         }
     }
     // is it mercadopago payment?
     if ($_POST['payment_option'] == 'mercadopago' && (double) $_POST['total_rental'] > 0) {
         $payments_others = unserialize(get_option('carrental_available_payments_others'));
         if ($payments_others && !empty($payments_others) && isset($payments_others['mercadopago']) && $payments_others['mercadopago']['enabled'] == 'yes' && (double) $payments_others['mercadopago']['security-deposit'] > 0) {
             $_POST['total_rental'] = $_POST['total_rental'] * ((double) $payments_others['mercadopago']['security-deposit'] / 100);
             if (isset($payments_others['mercadopago']['security-deposit-round'])) {
                 if ($payments_others['mercadopago']['security-deposit-round'] == 'up') {
                     $_POST['total_rental'] = ceil($_POST['total_rental']);
                 } elseif ($payments_others['mercadopago']['security-deposit-round'] == 'down') {
                     $_POST['total_rental'] = floor($_POST['total_rental']);
                 } else {
                     $_POST['total_rental'] = round($_POST['total_rental'], 2);
                 }
             } else {
                 $_POST['total_rental'] = round($_POST['total_rental'], 2);
             }
             require_once dirname(dirname(__FILE__)) . '/carrental-payments-mercadopago/mercadopago.php';
             $mp = new MP($payments_others['mercadopago']['client-id'], $payments_others['mercadopago']['client-secret']);
             $sandbox = false;
             $mp->sandbox_mode($sandbox);
             $preference_data = array("items" => array(array("id" => $order_hash, "title" => 'Car Rental Reservation #' . $order_hash, "currency_id" => 'ARS', "category_id" => "Category", "quantity" => 1, "unit_price" => (double) number_format((double) $_POST['total_rental'], 2, '.', ''))), "back_urls" => array("success" => home_url() . '?page=carrental&payment=paypal&summary=' . $order_hash, "failure" => $_SERVER['HTTP_REFERER'] . '&paymentError=1', "pending" => home_url() . '?page=carrental&payment=paypal&summary=' . $order_hash), "auto_return" => "approved", "notification_url" => CARRENTAL__PLUGIN_URL . 'mercadopago_ipn.php', "external_reference" => $order_hash . '#' . (isset($_SESSION['carrental_language']) && !empty($_SESSION['carrental_language']) ? $_SESSION['carrental_language'] : 'en_GB'), "expires" => false, "expiration_date_from" => null, "expiration_date_to" => null);
             try {
                 $preference = $mp->create_preference($preference_data);
             } catch (Exception $e) {
                 echo 'Error during MercadoPago payment: ' . $e->getMessage() . '. Please contact the administrator.';
                 exit;
             }
             Header('Location: ' . $preference['response'][($sandbox ? 'sandbox_' : '') . 'init_point']);
             exit;
         }
     }
     do_action('carrental_after_save_booking', $order_hash);
     Header('Location: ' . home_url() . '?page=carrental&summary=' . $order_hash);
     exit;
 }