📄 97充值--网关.sc
字号:
#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 + -