DragonNest/Server/DNCashServer/DNBillingConnectionCH.cpp
2024-12-19 09:48:26 +08:00

633 lines
34 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "StdAfx.h"
#include "DNBillingConnectionCH.h"
#include "DNUserRepository.h"
#include "DNManager.h"
#include "DNConnection.h"
#include "DNExtManager.h"
#include "DNSQLMembership.h"
#include "DNSQLWorld.h"
#include "DNSQLManager.h"
#include "Log.h"
#if defined(_CH) || defined(_EU)
CDNBillingConnectionCH *g_pBillingConnection = NULL;
CDNBillingConnectionCH::CDNBillingConnectionCH(void)
{
m_bInitialize = FALSE;
}
CDNBillingConnectionCH::~CDNBillingConnectionCH(void)
{
}
bool CDNBillingConnectionCH::Init()
{
DN_ASSERT(!IsInitialize(), "Already Opened!");
GSCallbackFuncDef CallbackFunc;
::memset(&CallbackFunc, 0, sizeof(CallbackFunc));
CallbackFunc.CallbackAccountAuthenRes = CallbackAccountAuthenRes;
CallbackFunc.CallbackAccountLockRes = CallbackAccountLockRes;
CallbackFunc.CallbackAccountUnlockRes = CallbackAccountUnlockRes;
int nRetVal = GSInitialize(&CallbackFunc, "./Config/ClientConfig.ini", 1);
if (nRetVal)
return false;
m_bInitialize = true;
return true;
}
void CDNBillingConnectionCH::Final()
{
if (m_bInitialize) {
int nRetVal = Uninitialize(1);
if (nRetVal)
return;
}
m_bInitialize = false;
}
int CDNBillingConnectionCH::OnBalanceInquiry(CDNUserRepository *pUser)
{
int nRet = pUser->CheckSessID();
if (nRet != ERROR_NONE)
return nRet;
nRet = SendCheckBalance(pUser);
if (nRet != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_BALANCEINQUIRY] CDNBillingConnectionCH::SendCheckBalance() - AccountName:%S Ret:%d\r\n", pUser->GetAccountName(), nRet);
return nRet;
}
int CDNBillingConnectionCH::OnBuy(CDNUserRepository *pUser)
{
pUser->SetOrderStep(SNDAORDERSTEP_WORK);
CDNBillingConnectionCH::TGoodsInfo Goods[MAX_GOOD_LEN] = { 0, };
int nCount = 0;
GetBuyGoodsInfo(pUser->GetBuyItemPart(), Goods, nCount);
int nRet = SendAccountLock(pUser, Goods, nCount, false);
if (nRet != ERROR_NONE){
g_Log.Log(LogType::_ERROR, pUser, L"[SendBillingPurchase] Ret : %d\r\n", nRet);
return nRet;
}
return ERROR_NONE;
}
int CDNBillingConnectionCH::OnPackageBuy(CDNUserRepository *pUser)
{
CDNBillingConnectionCH::TGoodsInfo Goods[MAX_GOOD_LEN] = { 0, };
Goods[0].nItemSN = pUser->GetPackageSN();
Goods[0].nPrice = pUser->m_nTotalPrice;
int nRet = SendAccountLock(pUser, Goods, 1, false);
if (nRet != ERROR_NONE){
g_Log.Log(LogType::_ERROR, pUser, L"[SendBillingPackage] Ret : %d\r\n", nRet);
return nRet;
}
return ERROR_NONE;
}
int CDNBillingConnectionCH::OnGift(CDNUserRepository *pUser)
{
pUser->SetOrderStep(SNDAORDERSTEP_WORK);
CDNBillingConnectionCH::TGoodsInfo Goods[MAX_GOOD_LEN] = { 0, };
int nCount = 0;
GetGiftGoodsInfo(pUser->GetGiftItemPart(), Goods, nCount);
int nRet = SendAccountLock(pUser, Goods, nCount, true);
if (nRet != ERROR_NONE){
g_Log.Log(LogType::_ERROR, pUser, L"[SendBillingPurchaseGift] Ret : %d\r\n", nRet);
return nRet;
}
return ERROR_NONE;
}
int CDNBillingConnectionCH::OnPackageGift(CDNUserRepository *pUser)
{
CDNBillingConnectionCH::TGoodsInfo Goods[MAX_GOOD_LEN] = { 0, };
Goods[0].nItemSN = pUser->GetPackageSN();
Goods[0].nPrice = pUser->m_nTotalPrice;
int nRet = SendAccountLock(pUser, Goods, 1, true);
if (nRet != ERROR_NONE){
g_Log.Log(LogType::_ERROR, pUser, L"[SendBillingPackage] Ret : %d\r\n", nRet);
return nRet;
}
return ERROR_NONE;
}
int CDNBillingConnectionCH::OnCoupon(CDNUserRepository *pUser)
{
return ERROR_GENERIC_INVALIDREQUEST;
}
int CDNBillingConnectionCH::SendCheckBalance(CDNUserRepository *pUser)
{
DN_ASSERT(NULL != pUser, "Invalid!");
DN_ASSERT(0 != pUser->GetAccountDBID(), "Invalid!");
DN_ASSERT(NULL != pUser->GetSessId(), "Invalid!"); // P.S.> CDNUserRepository <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><>
// P.S.> <20><><EFBFBD><EFBFBD> <20>α״<CEB1> ȣ<><C8A3><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
int nRetVal = -1;
GSBsipAccountAuthenReqDef Req;
::memset(&Req, 0, sizeof(Req));
Req.user_type = 1; // 1 : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><EFBFBD><E2BABB>)
Req.uid_type = 1; // 1 : PT ID (<28><><EFBFBD><EFBFBD>) / 2 : SNDA ID (<28><><EFBFBD><EFBFBD>) // <20>߱<EFBFBD><DFB1><EFBFBD> SNDA ID <20><><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD> PT ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
_strcpy(Req.user_id, _countof(Req.user_id), pUser->GetAccountName(), (int)strlen(pUser->GetAccountName()));
_strcpy(Req.sess_id, _countof(Req.sess_id), pUser->GetSessId(), (int)strlen(pUser->GetSessId()) );
nRetVal = GetNewId(Req.order_id);
if (0 > nRetVal) {
return nRetVal;
}
Req.serv_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.area_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.group_id_player = -1; // <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.endpoint_type = 1; // 1 : PC / 2 : <20>޴<EFBFBD><DEB4><EFBFBD>
_strcpy(Req.endpoint_ip, _countof(Req.endpoint_ip), pUser->m_szIp, (int)strlen(pUser->m_szIp));
Req.platform_type = 1; // 1 : PC / 2 : EZHOME
{
SYSTEMTIME aCurTime;
::GetLocalTime(&aCurTime);
sprintf_s(Req.call_time, "%04d-%02d-%02d %02d:%02d:%02d", aCurTime.wYear, aCurTime.wMonth, aCurTime.wDay, aCurTime.wHour, aCurTime.wMinute, aCurTime.wSecond);
}
Req.indication_authen = 1; // 1 : <20><EFBFBD><E2BABB>
Req.pay_type = 0; // 0 ; <20><EFBFBD><E2BABB>
nRetVal = SendAccountAuthenRequest(&Req);
if (nRetVal < 0)
g_Log.Log(LogType::_ERROR, L"SendAccountAuthenRequest Ret:%d\r\n", nRetVal);
return ConvertResult(nRetVal);
}
int CDNBillingConnectionCH::SendAccountLock(CDNUserRepository *pUser, TGoodsInfo *GoodsList, int nGoodsCount, bool bGift)
{
if (!pUser) return ERROR_GENERIC_INVALIDREQUEST;
if (!GoodsList) return ERROR_GENERIC_INVALIDREQUEST;
if (nGoodsCount <= 0) return ERROR_GENERIC_INVALIDREQUEST;
int nRetVal = -1;
GSBsipAccountLockReq Req;
::memset(&Req, 0, sizeof(Req));
Req.pay_type = 3; // 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
Req.app_type = bGift ? 174 : 17; // 17 : <20><EFBFBD><E2BABB>, 174: <20><><EFBFBD><EFBFBD>
Req.status = 2; // 2 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><C2B6><EFBFBD>
Req.couple_type = 2; // 2 : loose coupling, <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> ȭ<><C8AD>Ÿ<EFBFBD><C5B8>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><E5BFA1> <20><>Ʈ<EFBFBD><C6AE>
Req.fee = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Req.lock_period = 0; // 0 : <20><EFBFBD><E2BABB>, 20<32><30>
Req.uid_type = 1; // 1 : PT ID (<28><><EFBFBD><EFBFBD>) / 2 : SNDA ID (<28><><EFBFBD><EFBFBD>) // <20>߱<EFBFBD><DFB1><EFBFBD> SNDA ID <20><><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD> PT ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
_strcpy(Req.user_id, _countof(Req.user_id), pUser->GetAccountName(), (int)strlen(pUser->GetAccountName()));
_strcpy(Req.sess_id, _countof(Req.sess_id), pUser->GetSessId(), (int)strlen(pUser->GetSessId()));
Req.serv_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.area_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.group_id_player = -1; // <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.endpoint_type = 1; // 1 : PC / 2 : <20>޴<EFBFBD><DEB4><EFBFBD>
_strcpy(Req.endpoint_ip, _countof(Req.endpoint_ip), pUser->m_szIp, (int)strlen(pUser->m_szIp));
Req.platform_type = 1; // 1 : PC / 2 : EZHOME
{
SYSTEMTIME CurTime;
::GetLocalTime(&CurTime);
sprintf_s(Req.call_time, "%04d-%02d-%02d %02d:%02d:%02d", CurTime.wYear, CurTime.wMonth, CurTime.wDay, CurTime.wHour, CurTime.wMinute, CurTime.wSecond);
}
Req.indication_lock = 1; // 1 : <20><EFBFBD><E2BABB> (1 : Lock account, 2 : Reduce account, 5 : Reduce account and get coupon num)
Req.item_num = nGoodsCount; // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><31><C8B8> <20>ִ<EFBFBD> MAX_GOOD_LEN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
nRetVal = GetNewId(Req.context_id); // AccountLock / AccountUnlock <20><> <20><> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD> <20><>
if (0 > nRetVal)
g_Log.Log(LogType::_ERROR, L"GetNewId Ret:%d\r\n", nRetVal);
pUser->SetContextId(Req.context_id);
nRetVal = GetNewId(Req.order_id); // AccountLock / AccountUnlock <20><>ȸ ȣ<><C8A3> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD> <20><>
if (0 > nRetVal)
g_Log.Log(LogType::_ERROR, L"GetNewId Ret:%d\r\n", nRetVal);
for (int i = 0; i < nGoodsCount; i++){
if (GoodsList[i].nItemSN <= 0) continue;
Req.goods_info[i].area_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].serv_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].group_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].discount = 100; // 100 : <20><EFBFBD><E2BABB> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
Req.goods_info[i].item_num = 1; // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><31><C8B8> <20><><EFBFBD><EFBFBD>
Req.goods_info[i].item_id = GoodsList[i].nItemSN; // 1<><31>° ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CommodityID <20><> (ItemID <20>ƴ<EFBFBD> BuyItem->BuyItem.CashItem.nItemID)
Req.goods_info[i].item_amount = GoodsList[i].nPrice;
DN_ASSERT(0 < Req.goods_info[i].item_amount, "Check!");
}
nRetVal = SendAccountLockRequest(&Req);
if (nRetVal < 0)
nRetVal = ConvertResult(nRetVal);
return nRetVal;
}
int CDNBillingConnectionCH::SendAccountUnlock(CDNUserRepository *pUser, bool bConfirm, const char *pContextId, TGoodsInfo *GoodsList, int nGoodsCount, bool bGift)
{
DN_ASSERT(NULL != pUser, "Invalid!");
DN_ASSERT(NULL != pContextId, "Invalid!");
// P.S.> <20><><EFBFBD><EFBFBD> <20>α״<CEB1> ȣ<><C8A3><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
int nRetVal = -1;
GSBsipAccountUnlockReq Req;
Req.pay_type = 3; // 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
Req.app_type = bGift ? 174 : 17; // 17: <20><EFBFBD><E2BABB> 174: <20><><EFBFBD><EFBFBD>
Req.status = 2; // 2 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><C2B6><EFBFBD>
Req.couple_type = 2; // 2 : loose coupling, <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> ȭ<><C8AD>Ÿ<EFBFBD><C5B8>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><E5BFA1> <20><>Ʈ<EFBFBD><C6AE>
Req.responsable = 1; // 1 : <20><EFBFBD><E2BABB> (AccountUnlockRes <20><>ȯ <20><><EFBFBD><EFBFBD>)
Req.uid_type = 1; // 1 : PT ID (<28><><EFBFBD><EFBFBD>) / 2 : SNDA ID (<28><><EFBFBD><EFBFBD>) // <20>߱<EFBFBD><DFB1><EFBFBD> SNDA ID <20><><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD> PT ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
_strcpy(Req.user_id, _countof(Req.user_id), pUser->GetAccountName(), (int)strlen(pUser->GetAccountName()));
_strcpy(Req.sess_id, _countof(Req.sess_id), pUser->GetSessId(), (int)strlen(pUser->GetSessId()));
_strcpy(Req.context_id, _countof(Req.context_id), pContextId, (int)strlen(pContextId));
{
nRetVal = GetNewId(Req.order_id); // AccountLock / AccountUnlock <20><>ȸ ȣ<><C8A3> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD> <20><>
if (0 > nRetVal)
g_Log.Log(LogType::_ERROR, L"GetNewId Ret:%d\r\n", nRetVal);
}
Req.serv_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.area_id_player = -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.group_id_player = -1; // <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD> <20><>ȣ, <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> -1 <20><> <20><><EFBFBD><EFBFBD> <20><> Api<70><69> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bsipconfig.ini <20>κ<EFBFBD><CEBA><EFBFBD> ȹ<><C8B9>
Req.endpoint_type = 1; // 1 : PC / 2 : <20>޴<EFBFBD><DEB4><EFBFBD>
_strcpy(Req.endpoint_ip, _countof(Req.endpoint_ip), pUser->m_szIp, (int)strlen(pUser->m_szIp));
Req.platform_type = 1; // 1 : PC / 2 : EZHOME
{
SYSTEMTIME aCurTime;
::GetLocalTime(&aCurTime);
sprintf_s(Req.call_time, "%04d-%02d-%02d %02d:%02d:%02d", aCurTime.wYear, aCurTime.wMonth, aCurTime.wDay, aCurTime.wHour, aCurTime.wMinute, aCurTime.wSecond);
}
Req.indication_unlock = 1; // 1 : <20><EFBFBD><E2BABB> (1 : Unlock account, 2 : Reduce account, 5 : Reduce account and get coupon num)
Req.item_num = nGoodsCount; // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><31><C8B8> <20>ִ<EFBFBD> MAX_GOOD_LEN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Req.confirm = (bConfirm)?(1):(2); // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (1 : Ŀ<><C4BF> / 2 : <20>ѹ<EFBFBD>)
Req.amount = 0;
for (int i = 0; i < nGoodsCount; i++){
if (GoodsList[i].nItemSN <= 0) continue;
Req.goods_info[i].area_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].serv_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].group_id_item = -1; // -1 : <20><EFBFBD><E2BABB>
Req.goods_info[i].discount = 100; // 100 : <20><EFBFBD><E2BABB> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
Req.goods_info[i].item_num = 1; // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><31><C8B8> <20><><EFBFBD><EFBFBD>
Req.goods_info[i].item_id = GoodsList[i].nItemSN; // CommodityID <20><> (CashPackageTable <20><><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3> <20><>ǰ<EFBFBD><C7B0> CommodityID <20><> <20><><EFBFBD><EFBFBD>)
Req.goods_info[i].item_amount = GoodsList[i].nPrice; // ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ݾ<EFBFBD>
Req.amount += Req.goods_info[i].item_amount;
}
nRetVal = SendAccountUnlockRequest(&Req);
if (nRetVal < 0)
nRetVal = ConvertResult(nRetVal);
return nRetVal;
}
void CDNBillingConnectionCH::CallbackAccountAuthenRes(GSBsipAccountAuthenResDef* pRes)
{
if (!pRes) return;
CDNUserRepository *pUser = g_pManager->GetUser(pRes->user_id);
if (!pUser){
g_Log.Log(LogType::_ERROR, L"[CallbackAccountAuthenRes] User NULL! (AccountName:%s) \r\n", pRes->user_id);
return;
}
UINT nBalance = 0;
int nResult = ConvertResult(pRes->result);
if (ERROR_NONE == nResult) {
if (3 == pRes->pay_type1 && // <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
0 < pRes->balance1)
{
nBalance += pRes->balance1;
}
/*
if (3 == pRes->pay_type2 && // <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
0 < pRes->balance2)
{
nBalance += pRes->balance2;
}
if (3 == pRes->pay_type3 && // <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
0 < pRes->balance3)
{
nBalance += pRes->balance3;
}
if (3 == pRes->pay_type4 && // <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
0 < pRes->balance4)
{
nBalance += pRes->balance4;
}
if (3 == pRes->pay_type5 && // <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> 3 : <20><><EFBFBD><EFBFBD> ij<><C4B3>
0 < pRes->balance5)
{
nBalance += pRes->balance5;
}
*/
}
else {
g_Log.Log(LogType::_ERROR, pUser, L"[CallbackAccountAuthenRes] RetVal : %d\r\n", pRes->result); // 20100621
}
pUser->SendBalanceInquiry(nResult, nBalance);
}
void CDNBillingConnectionCH::CallbackAccountLockRes(GSBsipAccountLockResDef* pRes)
{
if (!pRes) return;
CDNUserRepository *pUser = g_pManager->GetUser(pRes->user_id);
if (!pUser) {
g_Log.Log(LogType::_ERROR, L"[CallbackAccountAuthenRes] User NULL! (AccountName:%s) \r\n", pRes->user_id);
return;
}
pUser->OnRecvAccountLock(pRes->result, pRes->context_id);
}
void CDNBillingConnectionCH::CallbackAccountUnlockRes(GSBsipAccountUnlockResDef* pRes)
{
if (!pRes) return;
CDNUserRepository *pUser = g_pManager->GetUser(pRes->user_id);
if (!pUser) {
g_Log.Log(LogType::_ERROR, L"[CallbackAccountAuthenRes] User NULL! (AccountName:%s) \r\n", pRes->user_id);
return;
}
pUser->OnRecvAccountUnlock(pRes->result, pRes->context_id, pRes->order_id, pRes->balance);
}
void CDNBillingConnectionCH::GetBuyGoodsInfo(CDNUserRepository::TBuyItemPart *pBuy, TGoodsInfo *GoodsList, int &nTotalCount)
{
if (!pBuy) return;
nTotalCount = 0;
for (int i = 0; i < MAX_GOOD_LEN; i++){
if (!pBuy->pPartItem[i]) continue;
GoodsList[nTotalCount].nItemSN = pBuy->pPartItem[i]->BuyItem.nItemSN;
GoodsList[nTotalCount].nPrice = pBuy->pPartItem[i]->nPrice;
nTotalCount++;
}
}
void CDNBillingConnectionCH::GetGiftGoodsInfo(CDNUserRepository::TGiftItemPart *pGift, TGoodsInfo *GoodsList, int &nTotalCount)
{
if (!pGift) return;
nTotalCount = 0;
for (int i = 0; i < MAX_GOOD_LEN; i++){
if (!pGift->pPartItem[i]) continue;
GoodsList[nTotalCount].nItemSN = pGift->pPartItem[i]->GiftItem.nItemSN;
GoodsList[nTotalCount].nPrice = pGift->pPartItem[i]->nPrice;
nTotalCount++;
}
}
int CDNBillingConnectionCH::ConvertResult(int nBillingResult)
{
if (0 <= nBillingResult) {
return ERROR_NONE;
}
switch(nBillingResult) {
case -106908: // the account is not exist or the balance is 0 // AccountAuthenRes <20><> <20><><EFBFBD><EFBFBD>
// case -106114: // user balance is 0
// case -106718: // user balance is 0
return ERROR_NONE;
case -100201: return ERROR_SHANDAAUTHOR_100201; // -100201 = PT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ptId format error
case -100202: return ERROR_SHANDAAUTHOR_100202; // -100202 <09><><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD> appId error
case -100203: return ERROR_SHANDAAUTHOR_100203; // -100203 <09><>Ƽ<EFBFBD><C6BC> ID <20><><EFBFBD><EFBFBD> areaId error
case -100206: return ERROR_SHANDAAUTHOR_100206; // -100206 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Account not exist
case -100207: return ERROR_SHANDAAUTHOR_100207; // -100207 <09><>Ƽ<EFBFBD><C6BC> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> areaId not exist
case -100208: return ERROR_SHANDAAUTHOR_100208; // -100208 <09><><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> appId not exist
case -100210: return ERROR_SHANDAAUTHOR_100210; // -100210 <09><>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> other error
case -100213: return ERROR_SHANDAAUTHOR_100213; // -100213 sdid <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD> sdId format error
case -100299: return ERROR_SHANDAAUTHOR_100299; // -100299 DB <20><><EFBFBD><EFBFBD> DB error
case -120101: return ERROR_SHANDAAUTHOR_120101; // -120101 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD> sndaID format error
case -120102: return ERROR_SHANDAAUTHOR_120102; // -120102 PT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ptId format error
case -120103: return ERROR_SHANDAAUTHOR_120103; // -120103 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> accountid <20><><EFBFBD><EFBFBD> accountID error
case -120104: return ERROR_SHANDAAUTHOR_120104; // -120104 <09>ܾ<EFBFBD> <20><><EFBFBD><EFBFBD> balance error
case -120105: return ERROR_SHANDAAUTHOR_120105; // -120105 <09><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> paytypeId error
case -120108: return ERROR_SHANDAAUTHOR_120108; // -120108 LBS <20><><EFBFBD><EFBFBD> DB<44><42> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD> no data in LBS DB
case -120109: return ERROR_SHANDAAUTHOR_120109; // -120109 <09><>Ÿ <20><><EFBFBD><EFBFBD> other errror
case -120111: return ERROR_SHANDAAUTHOR_120111; // -120111 <09><><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD> appId error
case -120112: return ERROR_SHANDAAUTHOR_120112; // -120112 <09><>Ʈ<EFBFBD><C6AE>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Net status error
case -120113: return ERROR_SHANDAAUTHOR_120113; // -120113 <09>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) data body error
case -129999: return ERROR_SHANDAAUTHOR_129999; // -129999 DB <20><><EFBFBD><EFBFBD> DB error
// Account
case -102601: return ERROR_SHANDAACCOUNT_102601; // -102601 <09><><EFBFBD><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Status error
case -102602: return ERROR_SHANDAACCOUNT_102602; // -102602 <09><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> Paytype error
case -102603: return ERROR_SHANDAACCOUNT_102603; // -102603 <09><><EFBFBD><EFBFBD> <20>ݾ<EFBFBD><DDBE><EFBFBD> 0<><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Amount error
case -102613: return ERROR_SHANDAACCOUNT_102613; // -102613 <09><>Ŷ log <20>ð<EFBFBD><C3B0><EFBFBD> 5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Calltime error
case -102604: return ERROR_SHANDAACCOUNT_102604; // -102604 PT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Account not exist
case -102605: return ERROR_SHANDAACCOUNT_102605; // -102605 <09><><EFBFBD><EFBFBD> <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> balance not exist
case -102609: return ERROR_SHANDAACCOUNT_102609; // -102609 sdid <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD> sdId format error
case -102610: return ERROR_SHANDAACCOUNT_102610; // -102610 <09>Һ<EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> appType error
case -102611: return ERROR_SHANDAACCOUNT_102611; // -102611 Ŀ<>ø<EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD>, <20>ݵ<EFBFBD><DDB5><EFBFBD> 1,2 <20><><EFBFBD><EFBFBD> <20><> coupletype error
case -102612: return ERROR_SHANDAACCOUNT_102612; // -102612 begintime<6D><65> endtime<6D><65><EFBFBD><EFBFBD> <20>۰ų<DBB0> <20><><EFBFBD>ƾ<EFBFBD> <20><> begintime must samll to endtime
case -102615: return ERROR_SHANDAACCOUNT_102615; // -102615 amount = 0 Amount is 0
case -102617: return ERROR_SHANDAACCOUNT_102617; // -102617 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
case -102699: return ERROR_SHANDAACCOUNT_102699; // -102699 DB <20><><EFBFBD><EFBFBD> DB error
case -120201: return ERROR_SHANDAACCOUNT_120201; // -120201 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD> sndaID format error
case -120202: return ERROR_SHANDAACCOUNT_120202; // -120202 PT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD>ų<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ptId format error
case -120203: return ERROR_SHANDAACCOUNT_120203; // -120203 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Amount error
case -120204: return ERROR_SHANDAACCOUNT_120204; // -120204 <09><>Ŷ <20><><EFBFBD>ε<EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> period error
case -120205: return ERROR_SHANDAACCOUNT_120205; // -120205 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ID not exist
case -120206: return ERROR_SHANDAACCOUNT_120206; // -120206 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> no union data
case -120207: return ERROR_SHANDAACCOUNT_120207; // -120207 <09><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> paytypeId error
case -120208: return ERROR_SHANDAACCOUNT_120208; // -120208 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> sndaID not exist
case -120209: return ERROR_SHANDAACCOUNT_120209; // -120209 <09><>Ÿ <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> other param format error
case -120210: return ERROR_SHANDAACCOUNT_120210; // -120210 orderid <20>ߺ<EFBFBD> orderid error
case -120211: return ERROR_SHANDAACCOUNT_120211; // -120211 serviceid <20><><EFBFBD><EFBFBD> appId error
case -120212: return ERROR_SHANDAACCOUNT_120212; // -120212 <09><>Ʈ<EFBFBD><C6AE>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> net status error
case -120213: return ERROR_SHANDAACCOUNT_120213; // -120213 cache flag <20><><EFBFBD><EFBFBD> flag error
case -120214: return ERROR_SHANDAACCOUNT_120214; // -120214 <09><><EFBFBD><EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> status error
case -120215: return ERROR_SHANDAACCOUNT_120215; // -120215 <09>Ѱ<EFBFBD> sessionid<69><64> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Data repeat
case -120216: return ERROR_SHANDAACCOUNT_120216; // -120216 ptid<69><64> sessionid<69><64> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ptId and sessid error
case -120217: return ERROR_SHANDAACCOUNT_120217; // -120217 PT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ptID not exist
// case -129999: return ERROR_SHANDAACCOUNT_129999; // -129999 <09>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sqlcode other error
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD>
case -200101: return ERROR_SHANDABILLING_200101; // SDIDLONGER -200101 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200102: return ERROR_SHANDABILLING_200102; // SDIDNULL -200102 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200103: return ERROR_SHANDABILLING_200103; // SDIDILLEGAL -200103 <09>ҹ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200199: return ERROR_SHANDABILLING_200199; // SDIDOTHER -200199 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> PT <20><><EFBFBD><EFBFBD>
case -200201: return ERROR_SHANDABILLING_200201; // PTIDLONGER -200201 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200202: return ERROR_SHANDABILLING_200202; // PTIDNULL -200202 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200203: return ERROR_SHANDABILLING_200203; // PTIDILLEGAL -200203 <09>ҹ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200204: return ERROR_SHANDABILLING_200204; // PTIDALLNUM -200204 <09><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ڰų<DAB0> <20><><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD>۵<EFBFBD> format error
case -200299: return ERROR_SHANDABILLING_200299; // PTIDOTHER -200299 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> ID
case -200301: return ERROR_SHANDABILLING_200301; // SERVIDLONGER -200301 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200302: return ERROR_SHANDABILLING_200302; // SERVIDNULL -200302 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200303: return ERROR_SHANDABILLING_200303; // SERVIDILLEGAL -200303 <09>ҹ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200399: return ERROR_SHANDABILLING_200399; // SERVIDOTHER -200399 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> <20><>Ƽ<EFBFBD><C6BC> ID
case -200401: return ERROR_SHANDABILLING_200401; // AREAIDLONGER -200401 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200402: return ERROR_SHANDABILLING_200402; // AREAIDNULL -200402 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200403: return ERROR_SHANDABILLING_200403; // AREAIDILLEGAL -200403 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200499: return ERROR_SHANDABILLING_200499; // AREAIDOTHER -200499 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> id
case -200501: return ERROR_SHANDABILLING_200501; // SESSIDLONGER -200501 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200502: return ERROR_SHANDABILLING_200502; // SESSIDNULL -200502 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200503: return ERROR_SHANDABILLING_200503; // SESSIDILLEGAL -200503 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200504: return ERROR_SHANDABILLING_200504; // SESSIDERRFORMAT -200504 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> <20>ҹ<EFBFBD>) format error
case -200599: return ERROR_SHANDABILLING_200599; // SESSIDOTHER -200599 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ id
case -200601: return ERROR_SHANDABILLING_200601; // UNIQUEIDLONGER -200601 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200602: return ERROR_SHANDABILLING_200602; // UNIQUEIDNULL -200602 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200603: return ERROR_SHANDABILLING_200603; // UNIQUEIDILLEGAL -200603 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200604: return ERROR_SHANDABILLING_200604; // UNIQUEIDERRFORMAT -200604 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> <20>ҹ<EFBFBD>) format error
case -200605: return ERROR_SHANDABILLING_200605; // UNIQUEIDREPEAT -200605 uniqueid <20>ߺ<EFBFBD><DFBA><EFBFBD> id repeat
case -200699: return ERROR_SHANDABILLING_200699; // UNIQUEIDOTHER -200699 <09><>Ÿ <20><><EFBFBD><EFBFBD> null
// <20><><EFBFBD><EFBFBD> ID
case -200801: return ERROR_SHANDABILLING_200801; // GROUPIDLONGER -200801 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -200802: return ERROR_SHANDABILLING_200802; // GROUPIDNULL -200802 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -200803: return ERROR_SHANDABILLING_200803; // GROUPIDILLEGAL -200803 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -200899: return ERROR_SHANDABILLING_200899; // GROUPIDOTHER -200899 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD>۽ð<DBBD>
case -201301: return ERROR_SHANDABILLING_201301; // BEGINTIMELONGER -201301 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -201302: return ERROR_SHANDABILLING_201302; // BEGINTIMENULL -201302 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -201303: return ERROR_SHANDABILLING_201303; // BEGINTIMEILLEGAL -201303 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -201304: return ERROR_SHANDABILLING_201304; // BEGINTIMEERRLONGFOMAT -201304 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, YYYY-MM-DD hh:mi:ss <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> <20><> format error
case -201305: return ERROR_SHANDABILLING_201305; // BEGINTIMEERRSHORTFOMAT -201305 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Եʣ<D4B5>YYYY-MM-DD <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> <20><> format error
case -201399: return ERROR_SHANDABILLING_201399; // BEGINTIMEOTHER -201399 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD>
case -201401: return ERROR_SHANDABILLING_201401; // ENDTIMELONGER -201401 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -201402: return ERROR_SHANDABILLING_201402; // ENDTIMENULL -201402 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -201403: return ERROR_SHANDABILLING_201403; // ENDTIMEILLEGAL -201403 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -201404: return ERROR_SHANDABILLING_201404; // ENDTIMEERRLONGFOMAT -201404 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, YYYY-MM-DD hh:mi:ss <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> <20><> format error
case -201405: return ERROR_SHANDABILLING_201405; // ENDTIMEERRSHORTFOMAT -201405 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Եʣ<D4B5>YYYY-MM-DD <20><><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> <20><> format error
case -201406: return ERROR_SHANDABILLING_201406; // ENDTIMEERRVALUE -201406 <09><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD>۽ð<DBBD><C3B0><EFBFBD><EFBFBD><EFBFBD> ŭ error value
case -201499: return ERROR_SHANDABILLING_201499; // ENDTIMEOTHER -201499 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ id
case -201501: return ERROR_SHANDABILLING_201501; // ORDERIDLONGER -201501 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -201502: return ERROR_SHANDABILLING_201502; // ORDERIDNULL -201502 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -201503: return ERROR_SHANDABILLING_201503; // ORDERIDILLEGAL -201503 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -201504: return ERROR_SHANDABILLING_201504; // ORDERIDERRFORMAT -201504 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҹ<EFBFBD><D2B9><EFBFBD> format error
case -201505: return ERROR_SHANDABILLING_201505; // ORDERIDREPEAT -201505 orderid<69>ߺ<EFBFBD> ID repeat
case -201599: return ERROR_SHANDABILLING_201599; // ORDERIDOTHER -201599 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> Ÿ<><C5B8>
case -201901: return ERROR_SHANDABILLING_201901; // PAYTYPELONGER -201901 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -201902: return ERROR_SHANDABILLING_201902; // PAYTYPENULL -201902 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -201903: return ERROR_SHANDABILLING_201903; // PAYTYPEILLEGAL -201903 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -201904: return ERROR_SHANDABILLING_201904; // PAYTYPEERRVALUE -201904 <09>Է<EFBFBD> <20><><EFBFBD><EFBFBD><><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) error value
case -201999: return ERROR_SHANDABILLING_201999; // PAYTYPEOTHER -201999 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20>Һ<EFBFBD> Ÿ<><C5B8>
case -202001: return ERROR_SHANDABILLING_202001; // APPTYPELONGER -202001 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -202002: return ERROR_SHANDABILLING_202002; // APPTYPENULL -202002 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -202003: return ERROR_SHANDABILLING_202003; // APPTYPEILLEGAL -202003 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -202004: return ERROR_SHANDABILLING_202004; // APPTYPEERRVALUE -202004 <09>Է<EFBFBD> <20><><EFBFBD><EFBFBD><><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) error value
case -202099: return ERROR_SHANDABILLING_202099; // APPTYPEOTHER -202099 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// Ŀ<>ø<EFBFBD> Ÿ<><C5B8>
case -202101: return ERROR_SHANDABILLING_202101; // COUPLETYPELONGER -202101 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -202102: return ERROR_SHANDABILLING_202102; // COUPLETYPENULL -202102 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -202103: return ERROR_SHANDABILLING_202103; // COUPLETYPEILLEGAL -202103 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -202104: return ERROR_SHANDABILLING_202104; // COUPLETYPEERRVALUE -202104 <09>Է<EFBFBD> <20><><EFBFBD><EFBFBD><><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) error value
case -202199: return ERROR_SHANDABILLING_202199; // COUPLETYPEOTHER -202199 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20>ݾ<EFBFBD>
case -202201: return ERROR_SHANDABILLING_202201; // AMOUNTLONGER -202201 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -202202: return ERROR_SHANDABILLING_202202; // AMOUNTNULL -202202 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -202203: return ERROR_SHANDABILLING_202203; // AMOUNTILLEGAL -202203 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -202204: return ERROR_SHANDABILLING_202204; // AMOUNTNEGATIVE -202204 <09><><EFBFBD>̳ʽ<CCB3> <20><><EFBFBD><EFBFBD> <20>Է<EFBFBD> error value
case -202205: return ERROR_SHANDABILLING_202205; // AMOUNTZERO -202205 0<><30> <20>Է<EFBFBD> error value
case -202206: return ERROR_SHANDABILLING_202206; // AMOUNTERRVALUE -202206 <09>Է<EFBFBD><D4B7><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ʹ<EFBFBD> ŭ error value
case -202299: return ERROR_SHANDABILLING_202299; // AMOUNTOTHER -202299 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case -202301: return ERROR_SHANDABILLING_202301; // DISCOUNTLONGER -202301 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -202302: return ERROR_SHANDABILLING_202302; // DISCOUNTNULL -202302 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -202303: return ERROR_SHANDABILLING_202303; // DISCOUNTILLEGAL -202303 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -202399: return ERROR_SHANDABILLING_202399; // DISCOUNTOTHER -202399 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ IP <20>ּ<EFBFBD>
case -202501: return ERROR_SHANDABILLING_202501; // IPLONGER -202501 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -202502: return ERROR_SHANDABILLING_202502; // IPNULL -202502 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -202503: return ERROR_SHANDABILLING_202503; // IPILLEGAL -202503 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -202504: return ERROR_SHANDABILLING_202504; // IPERRVALUE -202504 <09>Է<EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) error value
case -202599: return ERROR_SHANDABILLING_202599; // IPOTHER -202599 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD>
case -204401: return ERROR_SHANDABILLING_204401; // STATUSLONGER -204401 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
case -204402: return ERROR_SHANDABILLING_204402; // STATUSNULL -204402 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null
case -204403: return ERROR_SHANDABILLING_204403; // STATUSILLEGAL -204403 <09>ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> format error
case -204404: return ERROR_SHANDABILLING_204404; // STATUSERRVALUE -204404 <09>Է<EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) error value
case -204499: return ERROR_SHANDABILLING_204499; // STATUSOTHER -204499 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><><EFBFBD><EFBFBD> uid
case -200211: return ERROR_SHANDABILLING_200211; // UIDLONGER -200211 <09>Է±<D4B7><C2B1><EFBFBD> <20>ʰ<EFBFBD> long
// CBS<42><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
case -300001: return ERROR_SHANDABILLING_300001; // CBSDB_IS_DISCONNECT -300001 cbs DB <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> sql connect error
case -300102: return ERROR_SHANDABILLING_300102; // CBSDB_PROC_ERROR -300002 cbs sql <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> sql error
case -300103: return ERROR_SHANDABILLING_300103; // UNAUTHOR_OPERATION -300003 <09><><EFBFBD><EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û <20><>Ŷ Ÿ<><C5B8> unauthor
case -300201: return ERROR_SHANDABILLING_300201; // AMOUNT_NOT_MATCHING -300201 <09>ݾ<EFBFBD> <20><><EFBFBD><EFBFBD>ġ amount error
case -390001: return ERROR_SHANDABILLING_390001; // RES_TIMEOUT -390001 <09><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20>ʰ<EFBFBD> response time out
// <20><><EFBFBD><EFBFBD> <20><>ȯ-API
case -401001: return ERROR_SHANDABILLING_401001; // SOCKDISCONNECT -401001 socket <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> socket disconnect
case -401002: return ERROR_SHANDABILLING_401002; // SOCKIP_OR_PORTERR -401002 <09><><EFBFBD><EFBFBD> ip/port <20><><EFBFBD><EFBFBD> IP Port error
case -401003: return ERROR_SHANDABILLING_401003; // SOCKCONNECTFAIL -401003 socket <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> socket connect fail
case -401004: return ERROR_SHANDABILLING_401004; // SOCKLOCALFAILED -401004 <09><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ SOCKET <20><><EFBFBD><EFBFBD> initial fail
case -401005: return ERROR_SHANDABILLING_401005; // SNDBUF_OVERFLOW -401005 <09>߼<EFBFBD> buffer overflow send buffer overflow
case -401006: return ERROR_SHANDABILLING_401006; // RCVBUF_OVERFLOW -401006 <09><><EFBFBD><EFBFBD> buffer overflow recive buffer overflow
case -401007: return ERROR_SHANDABILLING_401007; // TMOBUF_OVERFLOW -401007 timeout buffer overflow timeout buffer overflow
case -401008: return ERROR_SHANDABILLING_401008; // LSOCKDISCONNECT -401008 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> socket error
case -401011: return ERROR_SHANDABILLING_401011; // NOINITCLIENT -401011 Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> client without initial
// QUEUE ó<><C3B3>
case -402001: return ERROR_SHANDABILLING_402001; // QUEUECACHEFULL -402001 <09><><EFBFBD><EFBFBD> cache full queue cache full
case -402002: return ERROR_SHANDABILLING_402002; // QUEUELOCKERROR -402002 <09><><EFBFBD><EFBFBD> lock <20><><EFBFBD><EFBFBD> queue lock error
case -402003: return ERROR_SHANDABILLING_402003; // QUEUEOPERATEERROR -402003 <09><><EFBFBD><EFBFBD> Push/Pop <20><><EFBFBD><EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><> pointer) queue param error
case -402004: return ERROR_SHANDABILLING_402004; // QUEUEEMPTY -402004 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Pop <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> queue null
case -402005: return ERROR_SHANDABILLING_402005; // QUEUEDATAERR -402005 cache <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>̰<EFBFBD> cache <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><> queue data error
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
case -403001: return ERROR_SHANDABILLING_403001; // USERDATALENERROR -403001 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Push <20><><EFBFBD>̿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ data length error
case -403002: return ERROR_SHANDABILLING_403002; // COMMUDATAERROR -403002 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><>ȣȭ <20><><EFBFBD><EFBFBD> encrypt error
// POINTER insert
case -404001: return ERROR_SHANDABILLING_404001; // POINTERNULL -404001 <09><> pointer <20><><EFBFBD><EFBFBD>(pointer<65><72> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> pointer<65><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>) point null
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> encode/decode
case -405001: return ERROR_SHANDABILLING_405001; // ENCRYPTERROR -405001 <09><>ȣȭ <20><><EFBFBD><EFBFBD> encrypt error
case -405002: return ERROR_SHANDABILLING_405002; // DECRYPTERROR -405002 <09><>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> decrypt error
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case -406001: return ERROR_SHANDABILLING_406001; // PARAMPATHERROR -406001 cache Ȥ<><C8A4> annular <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> path error
case -406002: return ERROR_SHANDABILLING_406002; // CONFLOADFAILED -406002 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD> fail to load ini
case -406003: return ERROR_SHANDABILLING_406003; // CONFGETFAILED -406003 <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20><><EFBFBD><EFBFBD> fail to get ini
case -406004: return ERROR_SHANDABILLING_406004; // RELOADFAILED -406004 <09>ε<EFBFBD> <20><><EFBFBD><EFBFBD> fail to reload
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
case -407001: return ERROR_SHANDABILLING_407001; // ERR_MSG_TYPE -407001 <09><>û <20>޽<EFBFBD><DEBD><EFBFBD> <20><> <20>޽<EFBFBD><DEBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> message type error
case -407002: return ERROR_SHANDABILLING_407002; // IP_NOT_EXIST -407002 <09><>û <20>޽<EFBFBD><DEBD><EFBFBD> <20><> hostIP<49><50> <20><><EFBFBD><EFBFBD> hostip not exist
case -407003: return ERROR_SHANDABILLING_407003; // ID_NOT_EXIST -407003 <09><>û <20>޽<EFBFBD><DEBD><EFBFBD> <20><> hostId<49><64> <20><><EFBFBD><EFBFBD> hostid not exist
case -407004: return ERROR_SHANDABILLING_407004; // SYS_FLAG_INVALID -407004 OS flag <20><><EFBFBD><EFBFBD> system flag error
case -407005: return ERROR_SHANDABILLING_407005; // MSG_LEN_ERR -407005 <09><>û <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> message length error
case -407006: return ERROR_SHANDABILLING_407006; // CANNOTCONNECTDB -407006 DB <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> db connect error
case -407099: return ERROR_SHANDABILLING_407099; // UNKNOWNED_ERR -407099 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
// <20><>Ÿ
case -499999: return ERROR_SHANDABILLING_499999; // UNDECLARE_ERROR -499999 <09><>Ÿ <20><><EFBFBD><EFBFBD> other error
default:
return ERROR_GENERIC_UNKNOWNERROR; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> !!!
}
return ERROR_DB;
}
#endif // #if defined(_CH) || defined(_EU)