اصفهان - گلپایگان - بخش مرکزی - شهر گلپایگان-محله پارک شهر-کوچه محبت-خیابان غدیر-پلاک 257 - کد پستی:8771664345
03157481449   09130246374   @  

03157481449   09130246374



رفع مشکل تایید خودکار سفارش خریداری شده در whmcs


رفع مشکل تایید خودکار سفارش خریداری شده در whmcs

بسیاری دیده شده که مشتری محصولی مانند هاست را خرید کرده و پرداخت موفق بوده ولی باز معلق بوده و مدیر باید تایید یا accept کند.

خب بسیاری از سایت ها توصیه کردند در بخش سرویسها در مدیریت در سرویس خود تب module setting در پایین تیک  Automatically setup the product as soon as the first payment is received را بزنید.

خیر این مورد برای بسیاری پاسخگو نبوده.

با یک هوک ساده میتوان این کار را انجام داد.

ابتدا به پوشه includes/hooks در مسیر نصب whmcs خود بروید و یک فایل با هر نامی مثلا autoacceptorder.php ایجاد کنید.

سپس کد های زیر را درون آن قرار دهید

 

<?php
/*
*
* Auto Accept Orders
* Created By Idan Ben-Ezra
*
* Copyrights @ Jetserver Web Hosting
* www.jetserver.net
*
* Hook version 1.0.1
*
**/
if (!defined("WHMCS"))
	die("This file cannot be accessed directly");

/*********************
 Auto Accept Orders Settings
*********************/
function jetserverAutoAcceptOrders_settings()
{
	return array(
		'apiuser'		=> '', // نام کاربری مدیر تایید کننده
		'autosetup' 		=> false, // determines whether product provisioning is performed
		'sendregistrar' 	=> true, // determines whether domain automation is performed
		'sendemail' 		=> true, // sets if welcome emails for products and registration confirmation emails for domains should be sent 
		'ispaid'		=> true, // set to true if you want to accept only paid orders
		'paymentmethod'		=> array(), // set the payment method you want to accept automaticly (leave empty to use all payment methods) * example array('paypal','amazonsimplepay')
	);
}
/********************/

function jetserverAutoAcceptOrders_accept($vars) 
{
	$settings = jetserverAutoAcceptOrders_settings();

	$ispaid = true;

	if($vars['InvoiceID'])
	{
		$result = localAPI('getinvoice', array(
			'invoiceid' 		=> $vars['InvoiceID'],
		), $settings['apiuser']);

		$ispaid = ($result['result'] == 'success' && $result['balance'] <= 0) ? true : false;
	}

	if((!sizeof($settings['paymentmethod']) || sizeof($settings['paymentmethod']) && in_array($vars['PaymentMethod'], $settings['paymentmethod'])) && (!$settings['ispaid'] || $settings['ispaid'] && $ispaid))
	{
		$result = localAPI('acceptorder', array(
			'orderid' 		=> $vars['OrderID'],
			'autosetup' 		=> $settings['autosetup'],
			'sendregistrar' 	=> $settings['sendregistrar'],
			'sendemail' 		=> $settings['sendemail'],
		), $settings['apiuser']);
	}
}

add_hook('AfterShoppingCartCheckout', 0, 'jetserverAutoAcceptOrders_accept');

?>

در کد بالا کافیست در بخش jetserverAutoAcceptOrders_settings  نام کاربری مدیر تایید کننده را اضافه کنید.

 

موفق باشید


1398/09/08 13:34:28      مطالب آموزشی php    28 بار    اشتراک در تلگرام    https://www.zhupin.ir/post/48

نظرات

دیدگاهی یافت نشد

کد امنیتی :

دریایی در شمال ایران؟