wordpress - pay - woocommerce login shortcode
URL de llamada de WooCommerce(después de la orden completa) (1)
Tengo 3 preguntas (necesito ayuda):
- No sé, cómo ejecutar este complemento (me da un error fatal) por favor revisa mi script (soy principiante)
- Necesito ayuda con la página de administración para configurar APIkey y elegir el idioma para la URL de la llamada http://xxx.CZ o http://xxx.SK (esta página aún no está encriptada)
- ¿Cómo agregar mi página de administración de complementos a la página de administración de woocommerce?
Este plugin es para Woocommerce. Se supone que debe llamar a una URL específica (http://heureka.cz/or .sk/dotaznik/"Clients API set up in admin page in woocommerce"/"Customers email"/"Order ID"/"bought Products ID"/)
cuando los clientes piden que se complete.
Soy principiante en PHP y Wordpress. Gracias a todos por ayudarme.
CÓDIGO:
<?php
/*
Plugin Name: Overené zákazníkmi Heureka
Plugin URI: http://www.podujatie.eu
Version: 0.1
Description:
Author: Podujatie.eu, Ing. Igor Kóňa
Tested up to: 3.6
Author URI: http://www.podujatie.eu
Text Domain: woocommerce-new-badge
License: GNU General Public License v3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html
*/
/**
* Check if WooCommerce is active
**/
if ( in_array( ''woocommerce/woocommerce.php'', apply_filters( ''active_plugins'', get_option( ''active_plugins'' ) ) ) ) {
if ( ! class_exists( ''WC_HO'' ) ) {
class WC_HO {
function heurekaovereno( $order_id ) {
error_log( "Order complete for order $order_id", 0 ); }
add_action( ''woocommerce_order_status_completed'', ''heurekaovereno'' );
// order object (optional but handy)
$order = new WC_Order( $order_id );
// do some stuff here
private function sendRequest($url)
{
$parsed = parse_url($url);
$fp = fsockopen($parsed[''host''], 80, $errno, $errstr, 5);
if (!$fp) {
throw new HeurekaOverenoException($errstr . '' ('' . $errno . '')'');
} else {
$return = '''';
$out = "GET " . $parsed[''path''] . "?" . $parsed[''query''] . " HTTP/1.1/r/n" .
"Host: " . $parsed[''host''] . "/r/n" .
"Connection: Close/r/n/r/n";
fputs($fp, $out);
while (!feof($fp)) {
$return .= fgets($fp, 128);
}
fclose($fp);
$returnParsed = explode("/r/n/r/n", $return);
return empty($returnParsed[1]) ? '''' : trim($returnParsed[1]);
}
}
/**
* Sends request to Heureka Overeno service and checks for valid response
*
* @return boolean true
*/
public function send()
{
if (empty($this->email)) {
throw new HeurekaOverenoException(''Customer email address not set'');
}
// create URL
$url = $this->getUrl() . ''?id='' . $this->apiKey . ''&email='' . urlencode($this->email);
foreach ($this->products as $product) {
$url .= ''&produkt[]='' . urlencode($product);
}
foreach ($this->productsItemId as $itemId) {
$url .= ''&itemId[]='' . urlencode($itemId);
}
// add order ID
if (isset($this->orderId)) {
$url .= ''&orderid='' . urlencode($this->orderId);
}
// send request and check for valid response
$contents = $this->sendRequest($url);
if ($contents == FALSE) {
throw new HeurekaOverenoException(''Unable to create HTTP request to Heureka Overeno service'');
} elseif ($contents == self::RESPONSE_OK) {
return TRUE;
} else {
throw new HeurekaOverenoException($contents);
}
}
/**
* Adds ordered products using item ID
*
* @param string $itemId Ordered product item ID
*/
public function addProductItemId($itemId)
{
$this->productsItemId[] = $itemId;
}
/**
* Adds ordered products using name
*
* Products names should be provided in UTF-8 encoding. The service can handle
* WINDOWS-1250 and ISO-8859-2 if necessary
*
* @param string $productName Ordered product name
*/
public function addProduct($productName)
{
$this->products[] = $productName;
}
/**
* Heureka endpoint URL
*
* @var string
*/
const BASE_URL = ''http://www.heureka.cz/direct/dotaznik/objednavka.php'';
const BASE_URL_SK = ''http://www.heureka.sk/direct/dotaznik/objednavka.php'';
/**
* Language IDs
*
* @var int
*/
const LANGUAGE_CZ = 1;
const LANGUAGE_SK = 2;
/**
* Valid response value
*
* @var string
*/
const RESPONSE_OK = ''ok'';
/**
* Shop API key
*
* @var string
*/
private $apiKey;
/**
* Customer email
*
* @var string
*/
private $email;
/**
* Ordered products
*
* @var array
*/
private $products = array();
/**
* Order ID
*
* @var int
*/
private $orderId;
/**
* Current language identifier
*
* @var int
*/
private $languageId = 1;
/**
* Ordered products provided using item ID
*
* @var array
*/
private $productsItemId = array();
/**
* Initialize Heureka Overeno service
*
* @param string $apiKey Shop API key
* @param int $languageId Language version settings
*/
public function __construct($apiKey, $languageId = self::LANGUAGE_CZ)
{
$this->setApiKey($apiKey);
$this->languageId = $languageId;
}
/**
* Sets API key and check well-formedness
*
* @param string $apiKey Shop api key
*/
public function setApiKey($apiKey)
{
if (preg_match(''(^[0-9abcdef]{32}$)'', $apiKey)) {
$this->apiKey = $apiKey;
} else {
throw new OverflowException(''Api key '' . $apiKey . '' is invalid.'');
}
}
/**
* Sets customer email
*
* @param string $email Customer email address
*/
public function setEmail($email)
{
$this->email = $email;
}
// Default options
add_option( ''wc_nb_newness'', ''30'' );
// Admin
add_action( ''woocommerce_settings_image_options_after'', array( $this, ''admin_settings'' ), 20);
add_action( ''woocommerce_update_options_catalog'', array( $this, ''save_admin_settings'' ) );
/*-----------------------------------------------------------------------------------*/
/* Class Functions */
/*-----------------------------------------------------------------------------------*/
// Load the settings
function admin_settings() {
woocommerce_admin_fields( $this->settings );
}
// Save the settings
function save_admin_settings() {
woocommerce_update_options( $this->settings );
}
if (!isset($wpdb)) $wpdb = $GLOBALS[''wpdb''];
$heurekaovereno_ver = ''1.00'';
$WC_HO = new WC_HO();
}
}
}
?>
Este script funciona (tiene pocos errores, pero funciona) solo cuando lo pones en functions.php Aquí es donde estoy preguntando, ¿por qué es así?