389 lines
18 KiB
C++
389 lines
18 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include "DNBillingConnectionJP.h"
|
|||
|
|
#include "DNConnection.h"
|
|||
|
|
#include "DNUserRepository.h"
|
|||
|
|
#include "DNExtManager.h"
|
|||
|
|
#include "DNSQLMembership.h"
|
|||
|
|
#include "DNSQLWorld.h"
|
|||
|
|
#include "Log.h"
|
|||
|
|
|
|||
|
|
extern TCashConfig g_Config;
|
|||
|
|
|
|||
|
|
#if defined(_JP)
|
|||
|
|
|
|||
|
|
CDNBillingConnectionJP *g_pBillingConnection = NULL;
|
|||
|
|
|
|||
|
|
CDNBillingConnectionJP::CDNBillingConnectionJP(void)
|
|||
|
|
{
|
|||
|
|
int nRet = -1;
|
|||
|
|
std::wstring wStr = g_Config.wszServiceType;
|
|||
|
|
ToLowerW(wStr);
|
|||
|
|
nRet = HanBillingInit("J_DNEST");
|
|||
|
|
if (nRet == HAN_BILLING_OK){
|
|||
|
|
g_Log.Log(LogType::_FILEDBLOG, L"HanBillingInit OK!!\r\n");
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_FILEDBLOG, L"HanBillingInit Fail (Error:%d, %d)!!\r\n", nRet, ConvertResult(nRet));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDNBillingConnectionJP::~CDNBillingConnectionJP(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnBalanceInquiry(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
int nCashBalance = 0;
|
|||
|
|
int nRet = SendBillingBalanceInquire(pUser->GetAccountName(), nCashBalance);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[OnBalanceInquiry] Ret:%d\r\n", nRet);
|
|||
|
|
return ERROR_GENERIC_INVALIDREQUEST; // <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pUser->SendBalanceInquiry(nRet, nCashBalance);
|
|||
|
|
return ERROR_NONE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnBuy(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
CDNSQLMembership *pMembershipDB = pUser->GetMembershipDB();
|
|||
|
|
if (!pMembershipDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
CDNSQLWorld *pWorldDB = pUser->GetWorldDB();
|
|||
|
|
if (!pWorldDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
int nRet = SendBillingBuy(pUser, pMembershipDB, pWorldDB);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[OnBuy] Ret:%d\r\n", nRet);
|
|||
|
|
nRet = ERROR_GENERIC_INVALIDREQUEST; // <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pUser->SendBuyGift(nRet);
|
|||
|
|
return ERROR_NONE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnPackageBuy(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
CDNSQLMembership *pMembershipDB = pUser->GetMembershipDB();
|
|||
|
|
if (!pMembershipDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
CDNSQLWorld *pWorldDB = pUser->GetWorldDB();
|
|||
|
|
if (!pWorldDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
int nRet = SendBillingPackageBuy(pUser, pMembershipDB, pWorldDB);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[OnPackageBuy] Ret:%d\r\n", nRet);
|
|||
|
|
nRet = ERROR_GENERIC_INVALIDREQUEST; // <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü;
|
|||
|
|
}
|
|||
|
|
pUser->SendBuyGift(nRet);
|
|||
|
|
return ERROR_NONE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnGift(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
CDNSQLMembership *pMembershipDB = pUser->GetMembershipDB();
|
|||
|
|
if (!pMembershipDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
CDNSQLWorld *pWorldDB = pUser->GetWorldDB();
|
|||
|
|
if (!pWorldDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
int nRet = SendBillingGift(pUser, pMembershipDB, pWorldDB);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[OnGift] Ret:%d\r\n", nRet);
|
|||
|
|
nRet = ERROR_GENERIC_INVALIDREQUEST; // <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü;
|
|||
|
|
}
|
|||
|
|
pUser->SendBuyGift(nRet);
|
|||
|
|
return ERROR_NONE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnPackageGift(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
CDNSQLMembership *pMembershipDB = pUser->GetMembershipDB();
|
|||
|
|
if (!pMembershipDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
CDNSQLWorld *pWorldDB = pUser->GetWorldDB();
|
|||
|
|
if (!pWorldDB) return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
|
|||
|
|
int nRet = SendBillingPackageGift(pUser, pMembershipDB, pWorldDB);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[OnPackageGift] Ret:%d\r\n", nRet);
|
|||
|
|
nRet = ERROR_GENERIC_INVALIDREQUEST; // <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü;
|
|||
|
|
}
|
|||
|
|
pUser->SendBuyGift(nRet);
|
|||
|
|
return ERROR_NONE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::OnCoupon(CDNUserRepository *pUser)
|
|||
|
|
{
|
|||
|
|
return ERROR_GENERIC_INVALIDREQUEST;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::ConvertResult(int nBillingResult)
|
|||
|
|
{
|
|||
|
|
switch (nBillingResult)
|
|||
|
|
{
|
|||
|
|
case HAN_BILLING_OK: return ERROR_NONE; // return ERROR_HAN_BILLING_OK;
|
|||
|
|
|
|||
|
|
// +) fault from Billing Server
|
|||
|
|
case HAN_BILLING_GAMECODE_NOTEXIST: return ERROR_HAN_BILLING_GAMECODE_NOTEXIST; // GAMEID <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_USERNO_NOTEXIST: return ERROR_HAN_BILLING_USERNO_NOTEXIST; // User Number <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_CMD_NOTEXIST: return ERROR_HAN_BILLING_CMD_NOTEXIST; // <20><><EFBFBD><EFBFBD> Ŀ<>ǵ尡 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_ORDNO_NOTEXIST: return ERROR_HAN_BILLING_ORDNO_NOTEXIST; // <20>ֹ<EFBFBD><D6B9><EFBFBD>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_SCD_NOTEXIST: return ERROR_HAN_BILLING_SCD_NOTEXIST; // <20><>ǰ<EFBFBD>ڵ尡 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_SNAME_NOTEXIST: return ERROR_HAN_BILLING_SNAME_NOTEXIST; // <20><>ǰ <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_QTY_NOTEXIST: return ERROR_HAN_BILLING_QTY_NOTEXIST; // <20><>ǰ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_AMT_NOTEXIST: return ERROR_HAN_BILLING_AMT_NOTEXIST; // <20><><EFBFBD>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_IP_NOTEXIST: return ERROR_HAN_BILLING_IP_NOTEXIST; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ IP <20>ּҰ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_USERNO_INVALID: return ERROR_HAN_BILLING_USERNO_INVALID; // User Number<65><72> <20>ùٸ<C3B9><D9B8><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_BUY_FAIL: return ERROR_HAN_BILLING_BUY_FAIL; // <20><> <20>ֹ<EFBFBD><D6B9><EFBFBD>ȣ<EFBFBD>δ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GAMECODE_INVALID: return ERROR_HAN_BILLING_GAMECODE_INVALID; // <20><><EFBFBD>Ӿ<EFBFBD><D3BE>̵<EFBFBD><CCB5><EFBFBD> <20>ùٸ<C3B9><D9B8><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_BALANCE_INSUFFICIENT: return ERROR_HAN_BILLING_BALANCE_INSUFFICIENT; // <20>ܾ<EFBFBD><DCBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|||
|
|
case HAN_BILLING_CMD_UNEXPECTED: return ERROR_HAN_BILLING_CMD_UNEXPECTED; // <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> Ŀ<>ǵ带 <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_DB_CONNECTFAIL: return ERROR_HAN_BILLING_DB_CONNECTFAIL; // <20><><EFBFBD><EFBFBD> DB <20><><EFBFBD>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_SVR_UNEXPECTED: return ERROR_HAN_BILLING_SVR_UNEXPECTED; // <20><><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
// -) fault from function / this system
|
|||
|
|
case HAN_BILLING_ARGUMENT_INVALID: return ERROR_HAN_BILLING_ARGUMENT_INVALID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ùٸ<C3B9><D9B8><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_ALREADY: return ERROR_HAN_BILLING_INITED_ALREADY; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_NOT: return ERROR_HAN_BILLING_INITED_NOT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_FAIL: return ERROR_HAN_BILLING_INITED_FAIL; // <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_FAILBALANCE: return ERROR_HAN_BILLING_INITED_FAILBALANCE; // <20>ܾ<EFBFBD><DCBE><EFBFBD>ȸĿ<C8B8>ؼ<EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_FAILBUY: return ERROR_HAN_BILLING_INITED_FAILBUY; // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD>ؼ<EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_FAILCONFIRM: return ERROR_HAN_BILLING_INITED_FAILCONFIRM; // <20><><EFBFBD><EFBFBD>Ȯ<EFBFBD><C8AE>Ŀ<EFBFBD>ؼ<EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETCONN_FAILBALANCE: return ERROR_HAN_BILLING_GETCONN_FAILBALANCE; // <20>ܾ<EFBFBD><DCBE><EFBFBD>ȸ Ŀ<>ؼ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETCONN_FAILBUY: return ERROR_HAN_BILLING_GETCONN_FAILBUY; // <20><><EFBFBD><EFBFBD> Ŀ<>ؼ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETCONN_FAILCONFIRM: return ERROR_HAN_BILLING_GETCONN_FAILCONFIRM; // <20><><EFBFBD><EFBFBD>Ȯ<EFBFBD><C8AE> Ŀ<>ؼ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_OPENREQ_FAIL: return ERROR_HAN_BILLING_OPENREQ_FAIL; // Request <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_SENDREQ_FAIL: return ERROR_HAN_BILLING_SENDREQ_FAIL; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Send <20><> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_RECVRESULT_FAIL: return ERROR_HAN_BILLING_RECVRESULT_FAIL; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Recv <20><> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_RECVRESULT_INVALID: return ERROR_HAN_BILLING_RECVRESULT_INVALID; // <20><><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ùٸ<C3B9><D9B8><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_INITED_FAILBILLNO: return ERROR_HAN_BILLING_INITED_FAILBILLNO;
|
|||
|
|
case HAN_BILLING_GETCONN_FAILBILLNO: return ERROR_HAN_BILLING_GETCONN_FAILBILLNO;
|
|||
|
|
case HAN_BILLING_INITED_FAILBILLNOACC: return ERROR_HAN_BILLING_INITED_FAILBILLNOACC;
|
|||
|
|
case HAN_BILLING_GETCONN_FAILBILLNOACC: return ERROR_HAN_BILLING_GETCONN_FAILBILLNOACC;
|
|||
|
|
case HAN_BILLING_DLL_UNEXPECTED: return ERROR_HAN_BILLING_DLL_UNEXPECTED; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ERROR_DB;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::ConvertGetBillNoResult(int nBillingResult)
|
|||
|
|
{
|
|||
|
|
switch (nBillingResult)
|
|||
|
|
{
|
|||
|
|
// 4.2 HanBillingGetBillNoAcc() <20><><EFBFBD><EFBFBD> Return Value
|
|||
|
|
// +) fault from TGS
|
|||
|
|
case HAN_BILLING_GETBILLNO_NEED_PARAM: return ERROR_HAN_BILLING_GETBILLNO_NEED_PARAM; // <20>ʼ<EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_IP_MISMATCH: return ERROR_HAN_BILLING_GETBILLNO_IP_MISMATCH; // IP<49><50> Ʋ<><C6B2><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_USERID_MISMATCH: return ERROR_HAN_BILLING_GETBILLNO_USERID_MISMATCH; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> Ʋ<><C6B2><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_DB_CONN_ERROR: return ERROR_HAN_BILLING_GETBILLNO_DB_CONN_ERROR; // DB <20><><EFBFBD>ῡ <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_USER_NOTEXIST: return ERROR_HAN_BILLING_GETBILLNO_USER_NOTEXIST; // <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_COOKIE_ERROR: return ERROR_HAN_BILLING_GETBILLNO_COOKIE_ERROR; // cookie <20><><EFBFBD><EFBFBD>
|
|||
|
|
case HAN_BILLING_GETBILLNO_COOKIE_IS_EMPTY: return ERROR_HAN_BILLING_GETBILLNO_COOKIE_IS_EMPTY; // cookie<69><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case HAN_BILLING_GETBILLNO_COOKIE_TIMEOUT: return ERROR_HAN_BILLING_GETBILLNO_COOKIE_TIMEOUT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cookie<69>Դϴ<D4B4>.
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ERROR_DB;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::SendBillingBalanceInquire(char *pAccountName, int &nCashBalance)
|
|||
|
|
{
|
|||
|
|
char szBillingNo[MAX_BILLNO_LEN] = { 0, }, szRetMsg[128] = { 0, };
|
|||
|
|
int nBillingRet = HanBillingGetBillNoAcc(pAccountName, szBillingNo, szRetMsg, 128);
|
|||
|
|
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
return ConvertGetBillNoResult(nBillingRet);
|
|||
|
|
|
|||
|
|
HANBILL_BALANCEINFO BalanceInfo = { 0, };
|
|||
|
|
nBillingRet = HanBillingBalanceInquire(pAccountName, szBillingNo, szRetMsg, 128, &BalanceInfo);
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
g_Log.Log(LogType::_ERROR, L"[CASH_BALANCEINQUIRY] AccountName:%S Ret:%S nBillingRet:%d\r\n", pAccountName, szRetMsg, nBillingRet);
|
|||
|
|
|
|||
|
|
nCashBalance = BalanceInfo.nTotalBalance;
|
|||
|
|
|
|||
|
|
return ConvertResult(nBillingRet);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::SendBillingBuy(CDNUserRepository *pUser, CDNSQLMembership *pMembershipDB, CDNSQLWorld *pWorldDB)
|
|||
|
|
{
|
|||
|
|
char szBillingNo[MAX_BILLNO_LEN] = { 0, }, szRetMsg[128] = { 0, };
|
|||
|
|
int nBillingRet = HanBillingGetBillNoAcc(pUser->GetAccountName(), szBillingNo, szRetMsg, 128);
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
return ConvertGetBillNoResult(nBillingRet);
|
|||
|
|
|
|||
|
|
HANBILL_BUYINFO BuyInfo = {0, };
|
|||
|
|
char szOrderNo[MAX_CODELEN] = {0, };
|
|||
|
|
|
|||
|
|
int nRet = ERROR_DB;
|
|||
|
|
|
|||
|
|
TCashCommodityData CashData;
|
|||
|
|
for (int i = 0; i < pUser->m_cProductCount; i++){ // <20><>ü<EFBFBD><C3BC> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѱ<EFBFBD><D1B0><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>
|
|||
|
|
CDNUserRepository::TBuyItem *pBuyItem = pUser->GetBuyItem(i);
|
|||
|
|
if (!pBuyItem)
|
|||
|
|
return ERROR_ITEM_NOTFOUND;
|
|||
|
|
|
|||
|
|
memset(&CashData, 0, sizeof(TCashCommodityData));
|
|||
|
|
bool bRet = g_pExtManager->GetCashCommodityData(pBuyItem->BuyItem.nItemSN, CashData);
|
|||
|
|
if (!bRet)
|
|||
|
|
return ERROR_ITEM_NOTFOUND;
|
|||
|
|
|
|||
|
|
nRet = pUser->AddPurchaseOrderByCash(i);
|
|||
|
|
if (nRet != ERROR_NONE)
|
|||
|
|
return nRet;
|
|||
|
|
|
|||
|
|
sprintf_s(szOrderNo, "%020I64d", pUser->GetPurchaseOrderID());
|
|||
|
|
memset(&BuyInfo, 0, sizeof(HANBILL_BUYINFO));
|
|||
|
|
nBillingRet = HanBillingBuy(pUser->GetAccountName(), szBillingNo, szRetMsg, 128, CashData.strJPSN.c_str(), CashData.strName.c_str(), 1, CashData.nPrice, pUser->m_szIp, szOrderNo, &BuyInfo);
|
|||
|
|
|
|||
|
|
char cOrderCode = DBDNMembership::OrderStatusCode::FailPayment;
|
|||
|
|
if (nBillingRet == HAN_BILLING_OK){
|
|||
|
|
cOrderCode = DBDNMembership::OrderStatusCode::Success;
|
|||
|
|
pBuyItem->BuyItem.bFail = false;
|
|||
|
|
}
|
|||
|
|
else{ // <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>fail
|
|||
|
|
pBuyItem->BuyItem.bFail = true;
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_BUY] AccountName:%S Ret:%S\r\n", pUser->GetAccountName(), szRetMsg);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
nRet = pMembershipDB->QuerySetPurchaseOrderResult(pUser->GetPurchaseOrderID(), cOrderCode, BuyInfo.szPaymentCode, nBillingRet, CashData.nReserve, pUser->m_nUsedPaidCash);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_BUY] QuerySetPurchaseOrderResult Fail(%d) Order(Eye:%I64d NHN:%S)\r\n", nBillingRet, pUser->GetPurchaseOrderID(), BuyInfo.szPaymentCode);
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (nBillingRet == HAN_BILLING_OK){
|
|||
|
|
nRet = pUser->CashItemDBProcess(pUser->GetWorldID(), pUser->GetAccountDBID(), pUser->GetCharacterDBID(), pUser->GetMapID(), pUser->GetChannelID(), pUser->GetPaymentRules(),
|
|||
|
|
pBuyItem->BuyItem, CashData.nPrice, pUser->GetPurchaseOrderID(), DBDNWorldDef::AddMaterializedItem::CashBuy);
|
|||
|
|
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
pMembershipDB->QueryModGiveFailFlag(pUser->GetPurchaseOrderID(), pBuyItem->BuyItem.nItemSN, pBuyItem->BuyItem.CashItem.nItemID, true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
nRet = ConvertResult(nBillingRet);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::SendBillingPackageBuy(CDNUserRepository *pUser, CDNSQLMembership *pMembershipDB, CDNSQLWorld *pWorldDB)
|
|||
|
|
{
|
|||
|
|
char szBillingNo[MAX_BILLNO_LEN] = { 0, }, szRetMsg[128] = { 0, };
|
|||
|
|
int nBillingRet = HanBillingGetBillNoAcc(pUser->GetAccountName(), szBillingNo, szRetMsg, 128);
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
return ConvertGetBillNoResult(nBillingRet);
|
|||
|
|
|
|||
|
|
HANBILL_BUYINFO BuyInfo = {0, };
|
|||
|
|
char szOrderNo[MAX_CODELEN] = {0, };
|
|||
|
|
|
|||
|
|
sprintf_s(szOrderNo, "%020I64d", pUser->GetPurchaseOrderID());
|
|||
|
|
memset(&BuyInfo, 0, sizeof(HANBILL_BUYINFO));
|
|||
|
|
|
|||
|
|
std::string strJPSN, strJPName;
|
|||
|
|
bool bCashRet = g_pExtManager->GetCashCommodityJPSN(pUser->GetPackageSN(), strJPSN);
|
|||
|
|
bool bNameRet = g_pExtManager->GetCashCommodityName(pUser->GetPackageSN(), strJPName);
|
|||
|
|
nBillingRet = HanBillingBuy(pUser->GetAccountName(), szBillingNo, szRetMsg, 128, (bCashRet) ? strJPSN.c_str() : NULL, (bCashRet) ? strJPName.c_str() : NULL, 1, pUser->m_nTotalPrice, pUser->m_szIp, szOrderNo, &BuyInfo);
|
|||
|
|
|
|||
|
|
char cOrderCode = DBDNMembership::OrderStatusCode::FailPayment;
|
|||
|
|
if (nBillingRet == HAN_BILLING_OK) cOrderCode = DBDNMembership::OrderStatusCode::Success;
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_PACKAGEBUY] AccountName:%S Ret:%S\r\n", pUser->GetAccountName(), szRetMsg);
|
|||
|
|
|
|||
|
|
int nRet = pMembershipDB->QuerySetPurchaseOrderResult(pUser->GetPurchaseOrderID(), cOrderCode, BuyInfo.szPaymentCode, nBillingRet, g_pExtManager->GetCashCommodityReserve(pUser->GetPackageSN()), pUser->m_nUsedPaidCash);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_PACKAGEBUY] QuerySetPurchaseOrderResult Fail(%d) Order(Eye:%I64d NHN:%S)\r\n", nBillingRet, pUser->GetPurchaseOrderID(), BuyInfo.szPaymentCode);
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
nRet = ConvertResult(nBillingRet);
|
|||
|
|
if (nRet == ERROR_NONE)
|
|||
|
|
pUser->CalcPackageProcess();
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::SendBillingGift(CDNUserRepository *pUser, CDNSQLMembership *pMembershipDB, CDNSQLWorld *pWorldDB)
|
|||
|
|
{
|
|||
|
|
char szBillingNo[MAX_BILLNO_LEN] = { 0, }, szRetMsg[128] = { 0, };
|
|||
|
|
int nBillingRet = HanBillingGetBillNoAcc(pUser->GetAccountName(), szBillingNo, szRetMsg, 128);
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
return ConvertGetBillNoResult(nBillingRet);
|
|||
|
|
|
|||
|
|
HANBILL_BUYINFO GiftInfo = {0, };
|
|||
|
|
char szOrderNo[MAX_CODELEN] = {0, };
|
|||
|
|
|
|||
|
|
TCashCommodityData CashData;
|
|||
|
|
for (int i = 0; i < pUser->m_cProductCount; i++){ // <20><>ü<EFBFBD><C3BC> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѱ<EFBFBD><D1B0><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>
|
|||
|
|
CDNUserRepository::TGiftItem *pGiftItem = pUser->GetGiftItem(i);
|
|||
|
|
if (!pGiftItem)
|
|||
|
|
return ERROR_ITEM_NOTFOUND;
|
|||
|
|
|
|||
|
|
memset(&CashData, 0, sizeof(TCashCommodityData));
|
|||
|
|
bool bRet = g_pExtManager->GetCashCommodityData(pGiftItem->GiftItem.nItemSN, CashData);
|
|||
|
|
if (!bRet)
|
|||
|
|
return ERROR_ITEM_NOTFOUND;
|
|||
|
|
|
|||
|
|
int nRet = pUser->AddPurchaseOrderByCash(i);
|
|||
|
|
if (nRet != ERROR_NONE)
|
|||
|
|
return nRet;
|
|||
|
|
|
|||
|
|
sprintf_s(szOrderNo, "%020I64d", pUser->GetPurchaseOrderID());
|
|||
|
|
memset(&GiftInfo, 0, sizeof(HANBILL_BUYINFO));
|
|||
|
|
nBillingRet = HanBillingBuy(pUser->GetAccountName(), szBillingNo, szRetMsg, 128, CashData.strJPSN.c_str(), CashData.strName.c_str(), 1, CashData.nPrice, pUser->m_szIp, szOrderNo, &GiftInfo);
|
|||
|
|
|
|||
|
|
char cOrderCode = DBDNMembership::OrderStatusCode::FailPayment;
|
|||
|
|
if (nBillingRet == HAN_BILLING_OK){
|
|||
|
|
cOrderCode = DBDNMembership::OrderStatusCode::Success;
|
|||
|
|
pGiftItem->GiftItem.bFail = false;
|
|||
|
|
}
|
|||
|
|
else{ // <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>fail
|
|||
|
|
pGiftItem->GiftItem.bFail = true;
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_GIFT] AccountName:%S Ret:%S\r\n", pUser->GetAccountName(), szRetMsg);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
nRet = pMembershipDB->QuerySetPurchaseOrderResult(pUser->GetPurchaseOrderID(), cOrderCode, GiftInfo.szPaymentCode, nBillingRet, CashData.nReserve, pUser->m_nUsedPaidCash);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_GIFT] QuerySetPurchaseOrderResult Fail(%d) Order(Eye:%I64d NHN:%S)\r\n", nBillingRet, pUser->GetPurchaseOrderID(), GiftInfo.szPaymentCode);
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ConvertResult(nBillingRet);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CDNBillingConnectionJP::SendBillingPackageGift(CDNUserRepository *pUser, CDNSQLMembership *pMembershipDB, CDNSQLWorld *pWorldDB)
|
|||
|
|
{
|
|||
|
|
char szBillingNo[MAX_BILLNO_LEN] = { 0, }, szRetMsg[128] = { 0, };
|
|||
|
|
int nBillingRet = HanBillingGetBillNoAcc(pUser->GetAccountName(), szBillingNo, szRetMsg, 128);
|
|||
|
|
if (nBillingRet != HAN_BILLING_OK)
|
|||
|
|
return ConvertGetBillNoResult(nBillingRet);
|
|||
|
|
|
|||
|
|
HANBILL_BUYINFO GiftInfo = {0, };
|
|||
|
|
char szOrderNo[MAX_CODELEN] = {0, };
|
|||
|
|
|
|||
|
|
sprintf_s(szOrderNo, "%020I64d", pUser->GetPurchaseOrderID());
|
|||
|
|
memset(&GiftInfo, 0, sizeof(HANBILL_BUYINFO));
|
|||
|
|
|
|||
|
|
std::string strJPSN, strJPName;
|
|||
|
|
bool bCashRet = g_pExtManager->GetCashCommodityJPSN(pUser->GetPackageSN(), strJPSN);
|
|||
|
|
bool bNameRet = g_pExtManager->GetCashCommodityName(pUser->GetPackageSN(), strJPName);
|
|||
|
|
nBillingRet = HanBillingBuy(pUser->GetAccountName(), szBillingNo, szRetMsg, 128, (bCashRet) ? strJPSN.c_str() : NULL, (bNameRet) ? strJPName.c_str() : NULL, 1, pUser->m_nTotalPrice, pUser->m_szIp, szOrderNo, &GiftInfo);
|
|||
|
|
|
|||
|
|
char cOrderCode = DBDNMembership::OrderStatusCode::FailPayment;
|
|||
|
|
if (nBillingRet == HAN_BILLING_OK) cOrderCode = DBDNMembership::OrderStatusCode::Success;
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_PACKAGEGIFT] AccountName:%S Ret:%S\r\n", pUser->GetAccountName(), szRetMsg);
|
|||
|
|
|
|||
|
|
int nRet = pMembershipDB->QuerySetPurchaseOrderResult(pUser->GetPurchaseOrderID(), cOrderCode, GiftInfo.szPaymentCode, nBillingRet, g_pExtManager->GetCashCommodityReserve(pUser->GetPackageSN()), pUser->m_nUsedPaidCash);
|
|||
|
|
if (nRet != ERROR_NONE){
|
|||
|
|
g_Log.Log(LogType::_ERROR, pUser, L"[CASH_PACKAGEGIFT] QuerySetPurchaseOrderResult Fail(%d) Order(Eye:%I64d NHN:%S)\r\n", nBillingRet, pUser->GetPurchaseOrderID(), GiftInfo.szPaymentCode);
|
|||
|
|
|
|||
|
|
return nRet;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return ConvertResult(nBillingRet);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif // #if defined(_JP)
|