⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 97充值--网关.sc

📁 用于收费语音服务的电话充值业务
💻 SC
📖 第 1 页 / 共 2 页
字号:
#function VCoinApply	
#function FuncVerifyUser	//用户认证函数
#function Func_JudgeCallerID	//判断主叫号码业务合法函数
#function main	//主函数

#iniparam int @InfoDBA //业务数据库站点号

#iniparam int @PWDCount //卡认证的输入次数
#iniparam int @CardLen //卡认证的卡号长度
#iniparam int @PWDLen //卡认证的密码长度
#iniparam string @FeeFile //付费判断文件和路径

#iniparam string @SPID 

#declare SR wsChoice=""  //保存按键值
#declare IR FeeLimited	//★★★★
#declare SR M_PayMent	//主叫号码的本月信息费
#declare SR M_AppNO	//获取唯一序列值
#declare SR M_CallerID	//获取唯一序列值
#declare IR IfCardUser  //是否卡付费用户   1: 卡付费  0:后付费
#declare SR LocalAreaCode	//本地ips区号
#declare IR GOR_para
#declare SR ServiceId	//保存服务认证号
#declare SR userID

main
{
:stWait
	Connect -> stAllocResource
:stAllocResource
	[SetDTMF "?"]
	[Assign ServiceId,$ServiceItemNo]
	[Assign SR29,".\vox\"]
	[AllocMediaDevice 1]
	AllocResourceOK -> stGetAreaCode
	AllocResourceFail -> stExit
:stGetAreaCode	//获取本地ips区号
	[Assign SR0,"select ltrim(to_char(areacode,'0000')),reserve1 from tbl_areacode"]	//???
	[ExecSQL SR0]
 //    Passed->stWelcome      
	Passed->stSaveAreaCode
	Failed->stExit
	TimeOut -> stExit
//★★用户认证begin
:stSaveAreaCode
       [SToI FD1]
	[Assign IR15,IR0]
	[Assign LocalAreaCode,FD0]
	[Stoi FD1]
	[Assign GOR_para,IR0]
	[CallFunc &FuncVerifyUser]
	Returned(0)->stWelcome	//用户认证成功
	Returned(1) -> stExit	//用户认证失败
//★★用户认证end
:stWelcome
                   
	[SwitchDBA @InfoDBA]
	Passed -> stStartFlow
	Failed -> stExit

:stStartFlow
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "KEY1main.vox"]
	[PlayFile  SR1]	                        //您好,欢迎拨打乐乐币充值热线,根据您充值过程中选择的乐乐币面额,收取等额的信息费
	StopPlayBack -> stAccountVoice
	DialTerminate -> stAccountVoice
	Failed -> stExit

:stAccountVoice
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "key2main.vox"]
	[PlayFile  SR1]	                         //请输入您要充值的乐乐币号码,按“#”号结束。
	StopPlayBack -> stInputAccount
	DialTerminate -> stInputAccount
	Failed -> stExit

:stInputAccount
	[ SetDTMF "#" ]
	[ Input 13,35 ]              //帐号是多少位?	号码是13位,等待35秒
	StopDigits('#') -> stGetAccount
	StopDigits -> stAccountVoice
	TimeOut -> stAccountVoice

:stGetAccount	
	[ParseParam SR0,1,"#"]
	[Assign userID,SR0]
	->stPlayGD

:stPlayGD	
	[CLEARDTMF]
	[SETDTMF "?"]	
       [Assign SR1,SR29]
	[StrCat SR1, "key3main.vox"]
	[PlayFile  SR1]                                             	//你输入的乐乐币号码
	StopPlayBack -> stPlayGD2
	DialTerminate -> stPlayGD2
	Failed ->stExit    
       [ Assign SR1,SR0]         
       [ ParseParam SR1,1,"#" ]
       [ StrTrim SR0] 		//把SR0中的左、右两边的空格都去掉
	[ Assign SR17,SR0]                                      //SR17里面存放用户输入的乐乐币号码  

:stPlayGD2
        [ CLEARDTMF ]
        [ SETDTMF "?" ]
        [ MixPlay 3,SR17 ]		//将SR17转换成3类型的音频
	StopPlayBack -> stPlayGD3
    	DialTerminate -> stPlayGD3
        Failed ->stExit

:stPlayGD3
	[CLEARDTMF]
	[SETDTMF "?"]
       [Assign SR1,SR29]
	[StrCat SR1, "keyok1main.vox"]
	[PlayFile  SR1]            	 		 //确认并发送请按1,重输请按2
	StopPlayBack -> stSure
	DialTerminate -> stSure			
	Failed ->stExit
	
:stSure
       [ Digit 10 ]
            StopDigits('1') -> stSureOK1
 //      StopDigits('1') ->stInput 
       StopDigits('2') ->stAccountVoice
       StopDigits -> stPlayGD3
       TimeOut ->stPlayGD3

:stSureOK1
	
	[Assign SR18,"10060"]
	[StrCat SR18,"&"]		//10060&
       [StrCat SR18,"0201"]            
       [StrCat SR18,"&"]       		
	[StrCat SR18,"2"]		
	[StrCat SR18,"&"]
	[StrCat SR18,SR17]
                [StrCat SR18,"&"]
       [StrCat SR18,$callerid]		//$callerid:一个呼叫的主叫号
	[DirectRequestData IR15,1020,SR18 ]
	DataReceived ->stRegistedOK2
	TimeOut ->stExit

:stRegistedOK2
	[SToI FD0]
	[Equal IR0,1]
	Passed ->stInput
	Failed ->stInputErro	

:stInputErro		                                                                 //播报用户输入的号码错误
	[CLEARDTMF]
	[SETDTMF "?"]	
       [Assign SR1,SR29]
	[StrCat SR1, "keyerror.vox"]
	[PlayFile  SR1]                                     		 //您输入的不正确
	StopPlayBack ->stAccountVoice
	DialTerminate ->stAccountVoice
	Failed ->stExit

:stInput
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "key4main.vox"]
	[PlayFile  SR1]	                                                            //请选择您要充值的金额,充值30元请按1,充值10元请按2,充值5元请按3,充值2元请按4
	StopPlayBack -> stChoice
	DialTerminate -> stChoice
	Failed -> stExit

:stChoice
       [ Digit 5 ]
	StopDigits('1') -> stMyChoice1                  //按1号键申请充值30元;
	StopDigits('2') -> stMyChoice2               //按2号键申请10元;
       StopDigits('3') -> stMyChoice3                //按3号键申请5元;
       StopDigits('4') -> stMyChoice4   	//按4号键申请2元;
       TimeOut -> stInput
       StopDigits->stInput
	[Assign wsChoice,SR0]
	[Stoi SR0]
	[Assign IR10,IR0]
	[Assign SR11,"confirm"]
	[Strcat SR11,wsChoice]
	[Strcat SR11,".vox"]

:stMyChoice1
	[CLEARDTMF]
	[SETDTMF "?"]
        [Assign SR1,SR29]
	[StrCat SR1, "key5main.vox"]
	[PlayFile  SR1]            	 		 //请选择充值数额,充值30元请按1键,
	StopPlayBack -> stMyChoice1_1
	DialTerminate ->stMyChoice1_1
	Failed ->stInput

:stMyChoice1_1
        [ CLEARDTMF ]
        [ SETDTMF "?" ]
        [Assign IR14,30] 
        [Itos    IR14 ]
       [ Assign SR12,SR0] 
        [ MixPlay 3  ,SR0 ]
//             StopPlayBack ->stFinishRecharge                      
	StopPlayBack ->stJudgeCallerID_1
    	DialTerminate ->stJudgeCallerID_1
        Failed ->stMyChoice1

:stMyChoice2
	[CLEARDTMF]
	[SETDTMF "?"]
       [Assign SR1,SR29]
	[StrCat SR1, "key5main.vox"]
	[PlayFile  SR1]            	 		 //请选择充值数额,充值10元请按2键,
	StopPlayBack -> stMyChoice2_1
	DialTerminate ->stMyChoice2_1
	Failed ->stInput

:stMyChoice2_1
        [ CLEARDTMF ]
        [ SETDTMF "?" ]
        [Assign IR14,10]  
        [Itos    IR14 ]  
        [ Assign SR12,SR0]                    
        [ MixPlay 3,SR0]
	StopPlayBack ->stJudgeCallerID_1
    	DialTerminate ->stJudgeCallerID_1
        Failed ->stMyChoice2

:stMyChoice3
	[CLEARDTMF]
	[SETDTMF "?"]
       [Assign SR1,SR29]
	[StrCat SR1, "key5main.vox"]
	[PlayFile  SR1]            	 		 //请选择充值数额,充值5元请按3键,
	StopPlayBack -> stMyChoice3_1
	DialTerminate ->stMyChoice3_1
	Failed ->stInput

:stMyChoice3_1

        [ CLEARDTMF ]
        [ SETDTMF "?" ]
        [Assign IR14,5]  
        [Itos    IR14 ] 
        [ Assign SR12,SR0]           
        [ MixPlay 3,SR0 ]
	StopPlayBack ->stJudgeCallerID_1
    	DialTerminate ->stJudgeCallerID_1
        Failed ->stMyChoice3

:stMyChoice4
	[CLEARDTMF]
	[SETDTMF "?"]
          [Assign SR1,SR29]
	[StrCat SR1, "key5main.vox"]
	[PlayFile  SR1]            	 		 //请选择充值数额,充值2元请按4键,
	StopPlayBack -> stMyChoice4_1
	DialTerminate ->stMyChoice4_1
	Failed ->stInput

:stMyChoice4_1
        [ CLEARDTMF ]
        [ SETDTMF "?" ]
         [Assign IR14,2]  
        [Itos    IR14 ]  
        [ Assign SR12,SR0]                  
        [ MixPlay 3,SR0 ]
	StopPlayBack ->stJudgeCallerID_1
    	DialTerminate ->stJudgeCallerID_1
        Failed ->stMyChoice4

:stJudgeCallerID_1
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "keyok2main.vox"]
	[PlayFile  SR1]		//确认请按1键,重新选择请按2键
	StopPlayBack ->stMyChoice5
	DialTerminate ->stMyChoice5
	Failed -> stExit

:stMyChoice5
	[ Digit 30 ]
       StopDigits('1') ->stJudgeCallerID 
//	StopDigits('1') ->stStartBill		//确认请按1键
	StopDigits('2') ->stInput                                      	//重新选择请按2键
	StopDigits ->stJudgeCallerID	
	TimeOut ->stJudgeCallerID


/*:stJudgeCallerID_1
               [CallFunc &Func_JudgeCallerID]
	Returned(0) -> stBillBegin
	Returned(1) -> stExit
	Returned(2) -> stOutFeeLimited	//★★★★

*/
:stJudgeCallerID	
	[CallFunc &Func_JudgeCallerID]
	Returned(0) -> stStartBill
	Returned(1) -> stExit
	Returned(2) -> stOutFeeLimited	//★★★★
:stStartBill
	[Assign $ServiceItemNo,ServiceId]
	[StrCat $ServiceItemNo,"0"]
	[StrCat $ServiceItemNo,wsChoice]
	[BillBegin 1,0,$ServiceItemNo]	
	Verify(0) -> stBillEndInfo	//正常返回
	Verify(108) -> stNotEnoughMoney	//余额不足
	Verify(145) -> stNotEnoughMoney	//余额达到限额
	Verify -> stSystemError
	Failed -> stSystemError
:stSystemError
	[Assign SR1,SR29]
	[StrCat SR1, "v030.vox"]
	[PlayFile SR1]	//系统故障,谢谢使用,再见。
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stNotEnoughMoney
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v022.vox"]
	[PlayFile SR1]	//卡号余额不足,谢谢使用,再见。
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stBillEndInfo
	[BillEnd]
	Verify(0) -> stGateWayWork
	Verify -> stSystemError
	Failed -> stSystemError


:stGateWayWork
	[Assign SR9,@SPID]
	[Assign SR18,"10060"]
	[StrCat SR18,"&"]
	[StrCat SR18,"0202"]
	[StrCat SR18,"&"]
       [StrCat SR18,"2"]
       [StrCat SR18,"&"]
       [StrCat SR18,SR17]     
	[StrCat SR18,"&"]
	[StrCat SR18,SR12]
                 [StrCat SR18,"&"]
       [StrCat SR18,$callerid]
	[DirectRequestData IR15,1020,SR18 ]        
	DataReceived ->stConnectSuccess1
	TimeOut ->stExit


:stConnectSuccess1
	[Assign SR4,"1"]          //1---success
	[Equal FD0,"1"]
	Passed->stWriteDBA
	Failed->stRechargeFail
:stRechargeFail
	[Assign SR4,"0"]         //0---Fail
	->stWriteDBA

:stWriteDBA
//	[Stoi wsChoice]
//	[Assign IR3,IR0]
//	[Mul IR3,5]             //userID--userID  SR3--coin type SR4--state
//	[Itos IR3]
//	[Assign SR3,SR0]
	[Assign SR2,"insert into coin_recharge_LLB(account_id,coin_type,phone_num,state,remark) values ('"]
	[Strcat SR2,userID]
	[StrCat SR2,"','"]
	[Strcat SR2,SR12]
	[StrCat SR2,"','"]
	[Strcat SR2,$CallerId]
	[StrCat SR2,"','"]
	[Strcat SR2,SR4]
	[StrCat SR2,"','"]
	[Strcat SR2,M_AppNO]
	[Strcat SR2,"')"]	
	[ExecSQL SR2]
	Passed->stFinishRecharge
	Failed->stSystemError
	TimeOut ->stSystemError

:stFinishRecharge
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "key6main.vox"]
	[PlayFile  SR1]	                                                                                 //充值成功,
	StopPlayBack -> stFinishRecharge1
	DialTerminate ->stFinishRecharge1
	Failed -> stExit

:stFinishRecharge1
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "key7main.vox"]
	[PlayFile  SR1]	                                            //继续充值请按1键,为其他号码充值请按2键,退出请挂机
	StopPlayBack -> stChoice2
	DialTerminate -> stChoice2
	Failed -> stExit

:stChoice2	
	[Digit  5]
	StopDigits('1')->stInput
	StopDigits('2')->stAccountVoice
//	StopDigits->stExit
	TimeOut->stFinishRecharge1
//★★封顶begin		//★★★★
:stOutFeeLimited
	[Assign FeeLimited,100]
	[CallFunc &FuncVerifyUser]
	Returned(0) -> stStartFlow
	Returned -> stExit
//★★封顶end		//★★★★
:stExit
	[DeallocMediaDevice 1]
	[RETURN 0]
}

//★★判断主叫号码业务合法函数begin
Func_JudgeCallerID
{
:stWait
	[Assign IR22,1]
	[Case IfCardUser]
	Case(0) -> stUser
	Case(1) -> stCarUser
	Case -> stExit
:stCarUser

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -