php wordpress csv woocommerce authorize.net

php - Obtener ID de transacción de autorización de authorize.net Autorizar AIM



wordpress csv (1)

La cadena de respuesta devuelta por Authorize.Net se verá más o menos así:

1|1|1|This transaction has been approved.|4DHVNH|Y|2230582188|none|Test transaction for ValidateCustomerPaymentProfile.|0.00|CC|auth_only|none|John|Doe||123 Main St.|Bellevue|WA|98004|USA|800-555-1234|800-555-1234|[email protected]|||||||||0.00|0.00|0.00|FALSE|none|E440D094322A0D406E01EDF9CE871A4F||2|||||||||||XXXX1111|Visa||||||||||||||||

Estos son los resultados separados por un | cuál es el carácter delimitador que estableces aquí:

"x_delim_char" => "|",

Rompe correctamente la cadena usando explode() :

$response_array = explode($post_values["x_delim_char"],$post_response);

que nos da esa información en una matriz llamada $response_array .

En la respuesta de Authorize.Net, la identificación de la transacción es 2230582188 . En nuestra matriz, ese es el séptimo elemento para que podamos obtenerlo usando:

$transaction_id = $response_array[6];

Aquí hay una demostración que muestra que esto funciona.

Estoy creando un plugin de informes woocommerce personalizado que mostrará cierta información y la escupirá como .csv. Lo devuelvo como nombre, nombre de la compañía, producto y cantidad. Lo hago de la siguiente manera.

/** * Check if we need customer phone. */ case ''wc_settings_tab_customer_phone'': array_push( $csv_values, self::customer_meta( get_the_ID(), ''_billing_phone'' ) ); break;

Ahora estoy usando Authorize.net AIM Payment Gateway para el complemento de Woocommerce para que se genere una ID de transacción.

Quiero incluir esto en mi exportación .csv. ¿Cómo voy a hacer esto? Intenté buscar en los archivos del complemento y me di cuenta de que esto es lo que el ID de la transacción era $response_array[6] pero no puedo encontrar la forma de devolverlo. ¡Si alguien pudiera mostrarme cómo acceder a la API de Authorize.net y obtener la identificación de la transacción que sería increíble! ¡Gracias de antemano!

EDITAR: Esto es lo que tengo hasta ahora. Agregué el código php para conectar pero parece que no puedo extraer la identificación de transacción de la orden. Por cierto, el "x_login" y "x_tran_key" han sido eliminados y reemplazados por "test123".

case ''wc_settings_tab_authorize_id'': $post_url = "https://secure.authorize.net/gateway/transact.dll"; $post_values = array( // the API Login ID and Transaction Key must be replaced with valid values "x_login" => "test123", "x_tran_key" => "test123", "x_version" => "3.1", "x_delim_data" => "TRUE", "x_delim_char" => "|", "x_relay_response" => "FALSE", // Additional fields can be added here as outlined in the AIM integration // guide at: http://developer.authorize.net ); // This sample code uses the CURL library for php to establish a connection, // submit the post, and record the response. // If you receive an error, you may want to ensure that you have the curl // library enabled in your php configuration $request = curl_init($post_url); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. $post_response = curl_exec($request); // execute curl post and store results in $post_response // additional options may be required depending upon your server configuration // you can find documentation on curl options at http://www.php.net/curl_setopt curl_close ($request); // close curl object // This line takes the response and breaks it into an array using the specified delimiting character $response_array = explode($post_values["x_delim_char"],$post_response); array_push( $csv_values, TransactionID() ); break;

EDIT 2: Implementando el código de John

case ''wc_settings_tab_authorize_id'': $post_url = "https://secure.authorize.net/gateway/transact.dll"; $post_values = array( // the API Login ID and Transaction Key must be replaced with valid values "x_login" => "test123", "x_tran_key" => "test123", "x_version" => "3.1", "x_delim_data" => "TRUE", "x_delim_char" => "|", "x_relay_response" => "FALSE", // Additional fields can be added here as outlined in the AIM integration // guide at: http://developer.authorize.net ); // This sample code uses the CURL library for php to establish a connection, // submit the post, and record the response. // If you receive an error, you may want to ensure that you have the curl // library enabled in your php configuration $request = curl_init($post_url); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. $post_response = curl_exec($request); // execute curl post and store results in $post_response // additional options may be required depending upon your server configuration // you can find documentation on curl options at http://www.php.net/curl_setopt curl_close ($request); // close curl object $post_response = ''1|1|1|This transaction has been approved.|4DHVNH|Y|2230582188|none|Test transaction for ValidateCustomerPaymentProfile.|0.00|CC|auth_only|none|John|Doe||123 Main St.|Bellevue|WA|98004|USA|800-555-1234|800-555-1234|[email protected]|||||||||0.00|0.00|0.00|FALSE|none|E440D094322A0D406E01EDF9CE871A4F||2|||||||||||XXXX1111|Visa||||||||||||||||''; $response_array = explode(''|'',$post_response); $transaction_id = $response_array[6]; array_push( $csv_values, $transaction_id ); break;

EDIT 3: Bien, esto es lo que tengo actualmente (excluyendo la API y la clave de transacción).

/** * Check for authorize.net transaction id. */ case ''wc_settings_tab_authorize_id'': $post_url = "https://secure.authorize.net/gateway/transact.dll"; $post_values = array( // the API Login ID and Transaction Key must be replaced with valid values "x_login" => "TEST", "x_tran_key" => "TEST", "x_version" => "3.1", "x_delim_data" => "TRUE", "x_delim_char" => "|", "x_relay_response" => "FALSE", // Additional fields can be added here as outlined in the AIM integration // guide at: http://developer.authorize.net ); // This sample code uses the CURL library for php to establish a connection, // submit the post, and record the response. // If you receive an error, you may want to ensure that you have the curl // library enabled in your php configuration $request = curl_init($post_url); // initiate curl object curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1) curl_setopt($request, CURLOPT_POSTFIELDS, http_build_query($post_values)); // use HTTP POST to send form data curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. $post_response = curl_exec($request); // execute curl post and store results in $post_response // additional options may be required depending upon your server configuration // you can find documentation on curl options at http://www.php.net/curl_setopt curl_close ($request); // close curl object // This line takes the response and breaks it into an array using the specified delimiting character $response_array = explode($post_values["x_delim_char"],$post_response); $transaction_id = $response_array[6]; array_push( $csv_values, $transaction_id ); break;

Todavía no puedo entender por qué esto no funcionará. Cuando intento devolver $transaction_id , obtengo el valor 0 . Cuando pruebo $post_response para ver qué devuelve, obtengo esto:

3|2|33|Credit card number is required.||P|0|||0.00|CC|auth_capture||||||||||||||||||||||||||THISISANALPHANUMERICNUMBER||||||||||||||||||||||||||||||

Antes había una cadena alfanumérica pero la reemplacé por razones de seguridad. ¿Crees que esto puede estar sucediendo porque no estoy estableciendo un número de cc o dirección de facturación con él?