jesusangel / wc-sermepa

Sermepa payment gateway plugin for WooCommerce
Other
28 stars 16 forks source link

Customizar el ID de pedido que se manda a la pasarela #14

Closed enbata closed 8 years ago

enbata commented 8 years ago

Hola Jesús Ángel,

por petición de algunos clientes necesitamos que en la pasarela aparezcan las IDs que utilizan en su aplicación de facturación (para temas de contabilidad).

Para conseguir esto hemos añadido dos filtros para que se pueda regenerar la ID que se manda a la pasarela:

Un ejemplo de implementación seria (extrapolada de una implementación real):

<?php

function uniqueOrderIdEncode( $unique_order_id, $order_id ){
    $order_id = MyCustomClass::createOrder( $order_id ); // Llamada a la aplicación de facturación para conseguir la ID que se guarda en el metadato '_my_order_id'
    if ( $order_id ):
        $my_order_id = get_post_meta( $order_id, "_my_order_id", TRUE );
        $unique_order_id = str_pad( $my_order_id . date( 'is' ), 12, '0', STR_PAD_LEFT );
    endif;

    return $unique_order_id;
}

function uniqueOrderIdDecode( $unique_order_id ){
    global $wpdb;

    $my_order_id = substr( $unique_order_id, 1, 7 );
    $results = $wpdb->get_results( "select post_id, meta_key from " . $wpdb->postmeta . " where meta_key = '_my_order_id' and meta_value = '" . $my_order_id . "'");
    if ( ! empty($results) ):
        $result = array_pop($results);
        $unique_order_id = $result->post_id;
    endif;

    return $unique_order_id;
}

// Generar la Ds_Order
add_filter("wc_myredsys_merchant_order_encode", 'uniqueOrderIdEncode', 1, 2);

// Conseguir la ID de compra de la Ds_Order
add_filter("wc_myredsys_merchant_order_decode", 'uniqueOrderIdDecode');

Un saludo,

Manex

enbata commented 8 years ago

Hola,

acabo de ver que ya estás implementando alguna solución al respecto de customizar la Ds_Order que se manda a la pasarela: https://wordpress.org/support/topic/order-id

La solución que se plantea en dicho thread me parece adecuada tambien, nos valdría.

Un saludo,

Manex

enbata commented 8 years ago

Hola de nuevo,

estoy implementando más cambios que necesito y por eso vuelvo a crear la peticion de merge desde un branch en vez del master: https://github.com/jesusangel/wc-sermepa/pull/16

Perdón las molestias.

Cierro esta petición.

Manex