2024-12-21 10:04:04 +08:00
# 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)