در WHMCS 8.2، ما امکان مشاهده اطلاعات موجودی درگاه پرداخت را در ناحیه مدیریت WHMCS اضافه کردیم. در اصل، این شامل نمایش اطلاعات از Stripe و PayPal Basic در لیست تراکنش ها در Billing > List Transactions و از Stripe در اطلاعات برای تراکنش های فردی است.
این پست وبلاگ نمایش ترازها را پوشش می دهد. برای اطلاعات بیشتر درباره نمایش اطلاعات تراکنش، به اطلاعات تراکنش در اسناد برنامهنویس ما مراجعه کنید .
ماژول Gateway اکنون به شما امکان می دهد داده ها را از هر درگاه پرداخت از طریق دو کلاس جدید نمایش دهید: Balance
و BalanceCollection
. برای توسعهدهندگان، بهویژه توسعهدهندگان درگاه پرداخت، این قابلیت جدید هیجانانگیزی است که به شما امکان میدهد پشتیبانی از نمایش تعادل را به هر درگاه پرداخت اضافه کنید.
بهطور پیشفرض در WHMCS، ما قبلاً نمایش تعادل داخلی را برای Stripe و PayPal Basic در لیست تراکنشها پیادهسازی کردهایم. با این حال، وقتی از این کلاسهای جدید برای سفارشیسازی یک ماژول درگاه پرداخت استفاده میکنید، میتواند شامل هر درگاه پرداختی باشد که با موفقیت با WHMCS استفاده میکنید.
برای نمایش این اطلاعات از WHMCS\Module\Gateway\Balance
و WHMCS\Module\Gateway\BalanceCollection
کلاس ها استفاده کنید.
هنگامی که از این کلاس ها استفاده می کنید، توصیه می کنیم این مراحل را برای اجرای آنها انجام دهید:
از WHMCS\Module\Gateway\BalanceCollection استفاده کنید./**
*@param آرایه $params
*
*@return BalanceCollection
*/
تابع yourmodulename_account_balance(آرایه $params = []): BalanceCollection
{
$balanceInfo = [];
/**
* برای بازیابی اطلاعات تعادل به دروازه متصل شوید.
*/
$postfields = [
‘حساب’ => $params[‘apikey’]،
];
$ch = curl_init();
curl_setopt($ch، CURLOPT_URL، ‘https://www.example.com/api/balance’);
curl_setopt($ch، CURLOPT_POST، 1);
curl_setopt($ch، CURLOPT_POSTFIELDS، http_build_query($postfields));
curl_setopt($ch، CURLOPT_RETURNTRANSFER، 1);
$response = curl_exec($ch);
curl_close ($ch);
$balanceData = json_decode($response);
این مرحله را برای هر یک از کدهای ارز پشتیبانی شده دروازه که موجودی متفاوتی را نشان می دهد، تکرار کنید. به عنوان مثال، Stripe از موجودی های موجود و معلق پشتیبانی می کند. با این حال، اکثر دروازه ها فقط یک نوع دارند Balance
.
$currencyCode = strtoupper($availableData[‘currency’]);
$amount[$currencyCode] = ($availableData[‘amount’] / 100); /**
* با استفاده از برچسب و رنگ فرمت پیش فرض، یک شی Balance اضافه کنید.
*/
$balanceInfo[] = موجودی::factory(
$amount[$currencyCode],
$currencyCode
);
}
این اختیاری است، و مانند مرحله بالا، اگر یک دروازه از انواع مختلف تعادل پشتیبانی می کند، می توانید آن را هر چند بار که لازم است تکرار کنید.
$currencyCode = strtoupper($pendingData[‘currency’]);
$pending[$currencyCode] = ($pendingData[‘amount’] / 100); /**
* یک شی Balance اضافه کنید و برچسب و رنگ پیش فرض را لغو کنید.
*/
$balanceInfo[] = موجودی::factory(
$pending[$currencyCode]،
$currencyCode،
‘status.pending’، //لیبل پیشفرض is status.available
‘#6ecacc’ //رنگ پیشفرض #5dc560 است
);
}
توجه به این نکته مهم است که اگر چیزی در آرایه یک شی نباشد Balance
، WHMCS با یک خطای مهلک مواجه خواهد شد.
* شی BalanceCollection آرایه ای را می پذیرد که شامل هر تعداد شی Balance باشد.
* ارسال یک آیتم در آرایه که یک شی Balance نیست، باعث خطای مهلک می شود.
*/
return BalanceCollection::factory(…$balanceInfo);
}
برای استفاده موفق از این عملکرد با ماژول درگاه پرداخت، کد شما باید شبیه به مثال زیر باشد:
از WHMCS\Module\Gateway\BalanceCollection استفاده کنید./**
* @param آرایه $params
*
* @return BalanceCollection
*/
تابع yourmodulename_account_balance(آرایه $params = []): BalanceCollection
{
$balanceInfo = [];
/**
* برای بازیابی اطلاعات تعادل به دروازه متصل شوید.
*/
$postfields = [
‘حساب’ => $params[‘apikey’]،
];
$ch = curl_init();
curl_setopt($ch، CURLOPT_URL، ‘https://www.example.com/api/balance’);
curl_setopt($ch، CURLOPT_POST، 1);
curl_setopt($ch، CURLOPT_POSTFIELDS، http_build_query($postfields));
curl_setopt($ch، CURLOPT_RETURNTRANSFER، 1);
$response = curl_exec($ch);
curl_close ($ch);
$balanceData = json_decode($response);
foreach ($balanceData[‘available’] به عنوان $availableData) {
$currencyCode = strtoupper($availableData[‘currency’]);
$amount[$currencyCode] = ($availableData[‘amount’] / 100);
/**
* با استفاده از برچسب و رنگ فرمت پیش فرض، یک شی Balance اضافه کنید.
*/
$balanceInfo[] = موجودی::factory(
$amount[$currencyCode],
$currencyCode
);
}
foreach ($balanceData[‘pending’] به عنوان $pendingData) {
$currencyCode = strtoupper($pendingData[‘currency’]);
$pending[$currencyCode] = ($pendingData[‘amount’] / 100);
/**
* یک شی Balance اضافه کنید و برچسب و رنگ پیش فرض را لغو کنید.
*/
$balanceInfo[] = موجودی::factory(
$pending[$currencyCode]،
$currencyCode،
‘status.pending’، //لیبل پیشفرض is status.available
‘#6ecacc’ //رنگ پیشفرض #5dc560 است
);
}
/**
* شی BalanceCollection آرایه ای را می پذیرد که شامل هر تعداد شی Balance باشد.
* ارسال یک آیتم در آرایه که یک شی Balance نیست، باعث خطای مهلک می شود.
*/
return BalanceCollection::factoryFromItems(…$balanceInfo);
}
هنگامی که از کد خود در WHMCS استفاده می کنید، مطمئن شوید که کاربرانی که وارد شده اند مجوزهای صحیح را دارند. بهطور پیشفرض، مدیران کامل به نمایشهای موجودی درگاه پرداخت دسترسی کامل دارند، اما سایر نقشهای سرپرست از شما میخواهند که View Gateway Balance Totals را برای مشاهده این اطلاعات فعال کنید.
پس از ارتقاء به WHMCS 8.2، میتوانید موجودیهای Stripe و PayPal Basic را به راحتی در Billing > List Transactions مشاهده کنید .
همچنین شایان ذکر است که جدا از این ماژول و عملکرد، یک ویجت جدید داشبورد Admin Area به طور خاص برای تعادل Stripe اضافه کردیم. میتوانید در این وبلاگ، در اسناد ما اطلاعات بیشتری در مورد آن بخوانید ، یا اطلاعات مربوط به ایجاد ویجتهای سفارشی برای داشبورد Admin Area را در اینجا مشاهده کنید .