' . sprintf( __( 'eCommerce Alligncommerce Payment Gateways depends on the last version of %s to work!', 'wpsc' ), 'WP eCommerce' ) . '
';
}
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
/**clear data when uninstall plugin******************/
register_uninstall_hook( __FILE__, 'uninstall_ac_paymentGateways_ecommerce' );
function uninstall_ac_paymentGateways_ecommerce()
{
delete_option('acBtc_al_country');
delete_option('acBtc_description');
delete_option('acBtc_api_key');
delete_option('acBtc_api_secret');
delete_option('acBtc_al_username');
delete_option('acBtc_al_password');
delete_option('acBtc_redirect_url');
delete_option('acBtc_ipn_url');
delete_option('acBank_al_country');
delete_option('acBank_description');
delete_option('acBank_redirect_url');
delete_option('acBank_ipn_url');
}
//print_r(get_option('active_plugins'));
if(!in_array('wp-e-commerce/wp-shopping-cart.php',get_option('active_plugins')))
//if(!class_exists( 'wpsc_merchant' ))
//if ( ! file_exists( WP_PLUGIN_DIR.'/wp-e-commerce/wpsc-includes/merchant.class.php' ) )
{
add_action( 'admin_notices', 'ecommerce_btc_payment_fallback_notice' );
$bct_plugin = plugin_dir_path( __FILE__ ).'/alligncommerce_payment.php';
deactivate_plugins($bct_plugin);
return;
}
else{
require_once WP_PLUGIN_DIR.'/wp-e-commerce/wpsc-includes/merchant.class.php';
$nzshpcrt_gateways[$num] = array(
'name' => __( 'Aligncommerce Bitcoin Payment', 'wpsc' ),
'api_version' => 1.0,
'class_name' => 'wpsc_merchant_acbctpay',
'has_recurring_billing' => true,
'display_name' => __( 'Aligncommerce Bitcoin Payment', 'wpsc' ),
'wp_admin_cannot_cancel' => false,
'form' => 'form_acBctpay',
'submit_function' => 'submit_acBctpay',
'function' => 'checkout_acBctpay',
'internalname' => 'wpsc_merchant_acbctpay',
'supported_currencies' => array('USD')
);
/*$image = apply_filters( 'wpsc_merchant_image', '', $nzshpcrt_gateways[$num]['internalname'] );
if ( ! empty( $image ) ) {
$nzshpcrt_gateways[$num]['image'] = $image;
} */
/***************Initialize payment gateway class*********/
/*add_action( 'plugins_loaded', 'ac_bct_class_init' );
function ac_bct_class_init()*/
class wpsc_merchant_acbctpay extends wpsc_merchant {
var $name = '';
function __construct( $purchase_id = null, $is_receiving = false ) {
$this->name = __( 'Aligncommerce Bitcoin Payment', 'wpsc' );
$this->currency_url='https://api.aligncommerce.com/currency';
parent::__construct( $purchase_id, $is_receiving );
global $wpsc_gateways;
$store_currency_data = WPSC_Countries::get_currency_data( get_option( 'currency_type' ), true );
//debugbreak();
$acUser=get_option( 'acBtc_al_username' );
$acPasword=get_option( 'acBtc_al_password' );
$allowed_currencies=array();
if($acUser!='')
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$this->currency_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $acUser.":" . $acPasword);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_POST, 1);
//curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$contents = curl_exec ($curl);
$cur_array = json_decode($contents, true);
curl_close ($curl);
for($i=0;$i
'.__( 'Gateway Disabled : Align Commerce Bitcoin does not support your store currency OR you entered wrong credentials.', 'wpsc' ).' |
';
}
//else
{
$output.= '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
';
/*
|
|
|
|
' ; */
}
return $output;
}
/***handle checkout process****/
function checkout_acBctpay($seperator, $sessionid)
{
global $wpsc_gateways, $wpdb,$wpsc_cart;
$acBctObj=new wpsc_merchant_acbctpay();
$acTokenurl = 'https://api.aligncommerce.com/oauth/access_token';
$acClientId=get_option( 'acBtc_api_key' );
$acClientSecter=get_option( 'acBtc_api_secret' );
$acUser=get_option( 'acBtc_al_username' );
$acPasword=get_option( 'acBtc_al_password' );
$post = array(
'grant_type' => 'client_credentials',
'client_id' => $acClientId,
'client_secret' => $acClientSecter,
'scope' => 'products,invoice,buyer'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$acTokenurl);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $acUser .":" .$acPasword );
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$contents = curl_exec ($curl);
$response = json_decode($contents, true);
$access_token = $response['access_token'];
curl_close ($curl);
//Create invoice
//This grabs the purchase log id from the database
//that refers to the $sessionid
$purchase_log = $wpdb->get_row(
"SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS .
"` WHERE `sessionid`= " . $sessionid . " LIMIT 1",
ARRAY_A);
//This grabs the users info using the $purchase_log
// from the previous SQL query
$usersql = "SELECT `" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.value,
`" . WPSC_TABLE_CHECKOUT_FORMS . "`.`name`,
`" . WPSC_TABLE_CHECKOUT_FORMS . "`.`unique_name` FROM
`" . WPSC_TABLE_CHECKOUT_FORMS . "` LEFT JOIN
`" . WPSC_TABLE_SUBMITED_FORM_DATA . "` ON
`" . WPSC_TABLE_CHECKOUT_FORMS . "`.id =
`" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.`form_id` WHERE
`" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.`log_id`=" . $purchase_log['id'];
$userinfo = $wpdb->get_results($usersql, ARRAY_A);
// convert from awkward format
foreach ((array)$userinfo as $value) {
if (strlen($value['value'])) {
$ui[$value['unique_name']] = $value['value'];
}
}
$userinfo = $ui;
$acCustomer_details=array(
'first_name' => $userinfo['billingfirstname'],
'last_name' => $userinfo['billinglastname'],
'email' => $userinfo['billingemail'],
'address_1' => $userinfo['billingaddress'],
'address_2' => $userinfo['billingcity']);
//debugbreak();
$productAry=array();
$i=0;
//debugbreak();
$shipping_total=$purchase_log['base_shipping'];
foreach ( $wpsc_cart->cart_items as $item ) {
/* if($i==0){$shipping_total=$purchase_log['base_shipping'];}
else
{$shipping_total=0;}*/
$shipping_total=$shipping_total+$item->shipping;
$productAry[]=array(
'product_name' => $item->product_name,
'product_price' => $item->unit_price ,
'quantity' => $item->quantity,
'product_shipping' => 0);
$i++;
}
/* if($shipping_total>0)
{
$productAry[]= array(
'product_name' => 'Total Shipping',
'product_price' => 0,
'quantity' => 1,
'product_shipping' => round($shipping_total,2));
}
$tax = wpsc_tax_isincluded() ? 0 : round($item->cart->total_tax,2);
// $tax=round($item->cart->total_tax,2);
if($tax>0)
{
$productAry[]= array(
'product_name' => 'Tax Amount',
'product_price' => $tax,
'quantity' => 1,
'product_shipping' => 0);
}
$discount=round($wpsc_cart->coupons_amount,2);
if($discount>0)
{
$productAry[]= array(
'product_name' => 'Discount',
'product_price' => -($discount),
'quantity' => 1,
'product_shipping' => 0);
}*/
// debugbreak();
$tax = wpsc_tax_isincluded() ? 0 : round($item->cart->total_tax,2);
$discount=round($wpsc_cart->coupons_amount,2);
//$countrylist = WPSC_Countries::get_countries_array( true, true );
$store_currency_data = WPSC_Countries::get_currency_data( get_option( 'currency_type' ), true );
$cur_code=($store_currency_data['code']);
$invoice_post = array(
'access_token' => $access_token,
'checkout_type' => 'btc',
'order_id'=>$purchase_log['id'],
//'currency'=>$cur_code,
'currency_id'=>get_option('ac_currency_id_bit'),
'products' => $productAry,
'buyer_info' => array(
'first_name' => $userinfo['billingfirstname'],
'last_name' => $userinfo['billinglastname'],
'email' => $userinfo['billingemail'],
'address_1' => $userinfo['billingaddress'],
'address_2' => '',
'address_number' => "",
'city' => $userinfo['billingcity'],
'state' => $userinfo['billingstate'],
'zip' => $userinfo['billingpostcode'],
'country' => WPSC_Countries::get_country($userinfo['billingcountry'])->_name,
'phone' => $userinfo['billingphone']),
'shipping' => array(
'description' => 'Shipping',
'amount' => round($shipping_total,2)
),
'shipping_address' => array(
'first_name' => $userinfo['shippingfirstname'],
'last_name' => $userinfo['shippinglastname'],
'email' => $userinfo['billingemail'],
'address_1' => $userinfo['shippingaddress'],
'address_2' => '',
'address_number' => "",
'city' => $userinfo['shippingcity'],
'state' => $userinfo['shippingstate'],
'zip' => $userinfo['shippingpostcode'],
'country' => WPSC_Countries::get_country($userinfo['shippingcountry'])->_name,
'phone' => $userinfo['billingphone'])
);
if($tax>0)
{$invoice_post['tax_rate']=array(
'description' => 'Tax',
//'percent' => '',
'amount' => $tax);}
if($discount>0){
$invoice_post['discount'] = array(
'description' => 'Discount',
//'percent_off' => '',
'amount_off' => $discount);
}
$acUser=get_option( 'acBtc_al_username' );
$acPasword=get_option( 'acBtc_al_password' );
$acCheckouturl = 'https://api.aligncommerce.com/invoice';
$curl1 = curl_init($acCheckouturl);
curl_setopt($curl1, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl1, CURLOPT_USERPWD, $acUser.":" . $acPasword);
curl_setopt($curl1, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl1, CURLOPT_POST, 1);
curl_setopt($curl1, CURLOPT_POSTFIELDS, http_build_query($invoice_post));
curl_setopt($curl1, CURLOPT_TIMEOUT, 10);
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl1, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl1, CURLOPT_SSL_VERIFYHOST, 0);
$contents1 = curl_exec ($curl1);
$response = json_decode($contents1, true);
$redirect_url=$response['data']['invoice_url'];
if($redirect_url!='')
{
header("Location:".$redirect_url);
}
else
{
if(is_array($response['error_message']))
{
$err_msg=implode("
",$response['error_message']);
}
else{$err_msg=$response['error_message'];}
$error_msg = __( $response['status']. " : ".$err_msg, 'wpsc' );
$acBctObj->set_error_message( $error_msg);
$acBctObj->return_to_checkout();
}
exit();
}
/***recieve response from gateway***********/
//add_action('init', 'nzshpcrt_acBitcoinPay_callback');
function nzshpcrt_acBitcoinPay_callback1()
{
global $wpdb;
$acBankObj=new wpsc_merchant_acbankpay();
$acResponse=$_POST;
if(isset($_GET['acBankCallback']) && $_GET['acBankCallback']==1)
{
$purchase_log = $wpdb->get_row(
"SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS .
"` WHERE `id`= " . $acResponse['order_id'] . " LIMIT 1",
ARRAY_A);
$sessionid=$purchase_log['sessionid'];
if($acResponse['checkout_type']=='bank_transfer')
{
switch($acResponse['status'])
{
case 'success':
$data = array(
'processed' => 2,
'transactid' => $acResponse['order_id'],
'date' => time(),
);
wpsc_update_purchase_log_details( $sessionid, $data, 'sessionid' );
transaction_results($sessionid, false, $acResponse['order_id']);
// $acBankObj->go_to_transaction_results($sessionid);
break;
case 'fail': // if it fails, delete it
$data = array(
'processed' => 6,
'transactid' => $acResponse['order_id'],
'date' => time(),
);
wpsc_update_purchase_log_details( $sessionid, $data, 'sessionid' );
transaction_results($sessionid, false, $acResponse['order_id']);
// $acBankObj->go_to_transaction_results($sessionid);
break;
case 'cancel': // need to wait for "Completed" before processing
$wpdb->update( WPSC_TABLE_PURCHASE_LOGS, array( 'transactid' => $acResponse['order_id'], 'date' => time() ), array( 'sessionid' => $sessionid ), array( '%d', '%s' ) );
// $acBankObj->go_to_transaction_results($sessionid);
break;
}
$transaction_url_with_sessionid = add_query_arg( 'sessionid', $sessionid, get_option( 'transact_url' ) );
echo $transaction_url_with_sessionid;
// echo $acBankObj->go_to_transaction_results($sessionid);
exit;
}
if($acResponse['checkout_type']=='btc')
{
switch($acResponse['status'])
{
case 'success':
$data = array(
'processed' => 3,
'transactid' => $acResponse['order_id'],
'date' => time(),
);
wpsc_update_purchase_log_details( $sessionid, $data, 'sessionid' );
transaction_results($sessionid, false, $acResponse['order_id']);
$acBankObj->go_to_transaction_results($sessionid);
break;
case 'fail': // if it fails, delete it
/*$log_id = $wpdb->get_var( $wpdb->prepare( "SELECT `id` FROM `".WPSC_TABLE_PURCHASE_LOGS."` WHERE `sessionid`=%s LIMIT 1", $sessionid ) );
$delete_log_form_sql = $wpdb->prepare( "SELECT * FROM `".WPSC_TABLE_CART_CONTENTS."` WHERE `purchaseid`=%d", $log_id );
$cart_content = $wpdb->get_results($delete_log_form_sql,ARRAY_A);
foreach((array)$cart_content as $cart_item)
{
$cart_item_variations = $wpdb->query( $wpdb->prepare( "DELETE FROM `".WPSC_TABLE_CART_ITEM_VARIATIONS."` WHERE `cart_id` = %d", $cart_item['id'] ), ARRAY_A);
}
$wpdb->query( $wpdb->prepare( "DELETE FROM `".WPSC_TABLE_CART_CONTENTS."` WHERE `purchaseid`=%d", $log_id ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM `".WPSC_TABLE_SUBMITTED_FORM_DATA."` WHERE `log_id` IN ( %d )", $log_id ) );
$wpdb->query( $wpdb->prepare( "DELETE FROM `".WPSC_TABLE_PURCHASE_LOGS."` WHERE `id`=%d LIMIT 1", $log_id ) );*/
$data = array(
'processed' => 6,
'transactid' => $acResponse['order_id'],
'date' => time(),
);
wpsc_update_purchase_log_details( $sessionid, $data, 'sessionid' );
transaction_results($sessionid, false, $acResponse['order_id']);
$acBankObj->go_to_transaction_results($sessionid);
break;
case 'cancel': // need to wait for "Completed" before processing
$wpdb->update( WPSC_TABLE_PURCHASE_LOGS, array( 'transactid' => $acResponse['order_id'], 'date' => time() ), array( 'sessionid' => $sessionid ), array( '%d', '%s' ) );
$acBankObj->go_to_transaction_results($sessionid);
break;
}
$transaction_url_with_sessionid = add_query_arg( 'sessionid', $sessionid, get_option( 'transact_url' ) );
echo $transaction_url_with_sessionid;
}
}
}
add_action('wp_footer','availablityCheckACBitcoin');
function availablityCheckACBitcoin()
{
$acCountryAry="'".implode("','",(get_option('acBtc_al_country')))."'";
?>