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

📄 11696.sc

📁 用于收费语音服务的电话充值业务
💻 SC
📖 第 1 页 / 共 2 页
字号:
	[QQLogOn wsMYQQ,""]
	Passed->stBackTop
	Failed->stNotNormal
	TimeOut ->stNotNormal
:stBackTop
	[assign wsQQType,FD8]  //把号码类型保存
	[Assign IR2,0]
	->stExit
:stSex	
    	[ClearDTMF ]                
	[ SETDTMF "12*#" ]           //请重新选择性别类型,1、男性,2,女性,返回请按#键
	[Prompt 2067]
    	StopPlayBack -> stSexDigit
	DialTerminate -> stSexDigit
:stSexDigit
	[Digit 10]
	StopDigits('1') ->stSaveSex
	StopDigits('2') ->stSaveSex
	StopDigits -> stSex
	TimeOut -> stSex	
:stSaveSex
	[QQSetPersonalInfo wsMYQQ,3,SR0]
	Passed ->stExit
	Failed ->stExit	
:stNotNormal
	[Assign  IR2,1]
	->stExit
:stExit
	[Return IR2 ]
}




//★★用户认证函数begin
FuncVerifyUser
{
//★★绑定判断:$AccountID为空、$CallerID为主叫号码,VerifyUser返回值:Verify(0)----号码绑定;
//★★		Verify(149)----号码未绑定;Verify----例外;Failed----失败
//★★用户认证:$AccountID为卡号、$AccountKind为卡的类型、$Password为卡的密码,VerifyUser返回值:
//★★		Verify(0)----正常、Verify(108)----卡余额不足、Verify(110)----卡/用户不存在、
//★★		Verify(114)----卡/用户密码错误、Verify(118)----消息包异常、Verify(141)----卡号未激活、
//★★		Verify(142)----卡正在使用、Verify(143)----卡过有效期、Verify(144)----卡上黑名单、
//★★		Verify(145)----卡余额达到限额、Verify(146)----卡不允许使用、Verify(147)----系统故障
//★★		Verify----例外;Failed----失败
:stWait
	////[Assign $CallerID,@PhoneNum]
	[Assign IR22,1]
	[Assign IR23,0]	//判断重输卡号次数
	[Assign SR29,".\vox\"]
	-> stVerifyCaller
//★★手机判断begin/////////////////////////////////////////////
//★★如果第1位是0则去掉0,然后看剩下的号码长度是否大于12位,如果大于
//★★12位,则认为是区号+真实号码,否则是真实号码,然后再去掉区号,再
//★★判断第1--3位是否是:13/013的,如果是则走预付费,否则进行南北方判断
//★★如果是南方则预付费,北方则要判断号码是否非法,然后再走后付费

//★★我大致考虑了一下,对电话商务的流程,可以通过以下简单的规则判断主叫号码的合法性。
//★★鉴于目前双区号号码均已经去除了一个区号,剩下的号码无非两种情况:一个区号(不含0)+本地号码
//★★或仅本地号码(特别复杂情况暂不考虑)。这时号码的长度应该如下:
//★★长度为10位或11位
:stVerifyCaller
	[Assign $AccountKind,0]
	[Assign $AccountID,""]
	[Assign $Password,""]
	[VerifyUser $AccountID,-1]
	Verify(0)->stNotCard
	Verify(150) ->stVerifyPhoneCard
	Verify(151) ->stVerifyPhoneCard
	Verify(152) ->stVerifyPhoneCard
	Verify ->stJudgeSouth
:stJudgeSouth
	[AccessFile @FeeFile,0]
	Passed ->stExit
	Failed ->stNotCard
:stIfPhoneZeroBegin
	[Assign SR10,$CallerID]		//判断第一位是不是0,如果是则去掉0
	[StrSub SR10,1,1]
	[Equal SR0,"0"]
	Passed -> stErasePhoneZero
	Failed -> stJudgePhoneLen
:stErasePhoneZero
	[StrSub SR10,2,30]
	[Assign SR10,SR0]
	->stJudgePhoneLen
:stJudgePhoneLen		//判断长度如果大于12位,则认为是区号+真实号码,否则是真实号码(被去掉0了)
	[StrLen SR10]
	[Great IR0,11]
	Passed -> stJudgePhone
	Failed -> stJudgeArea
:stJudgePhone
	[StrSub SR10,1,1]
	[SToI SR0]
	[Less IR0,3]
	Passed -> stEarsePhone2Bit
	Failed -> stEarsePhone3Bit
:stEarsePhone2Bit
	[StrSub SR10,3,30]
	[Assign SR10,SR0]
	-> stIfMobile
:stEarsePhone3Bit
	[StrSub SR10,4,30]
	[Assign SR10,SR0]
	-> stIfMobile
:stIfMobile		//判断是否是手机用户,如果是则预付费,否则看是南北,南:预付费;北:后付费
	[StrSub SR10,1,2]
	[Equal SR0,"13"]
	Passed -> stVerifyPhoneCard
	Failed -> stIfMobile1
:stIfMobile1
	[StrSub SR10,1,3]
	[Equal SR0,"013"]
	Passed -> stEraseMobile1Bit
	Failed -> stJudgeArea
:stEraseMobile1Bit
	[StrSub SR10,2,30]
	[Assign SR10,SR0]
	-> stVerifyPhoneCard
:stJudgeArea
	[Assign $CallerID,SR10]
	[AccessFile @FeeFile,0]
	Passed->stVerifyPhoneCard	//预付费(针对非网通用户)
	Failed->stNotCard	//stVerifyPhoneLaw //后付费(针对网通用户)号码非法判断
//★★手机判断end//////////////////////////////////////////////

//★★北方号码非法判断begin///////////////////////////////////
:stVerifyPhoneLaw
	[Assign SR10,$CallerID]		//判断第一位是不是0,如果是则去掉0
	[StrSub SR10,1,1]
	[Equal SR0,"0"]
	Passed -> stErasePhoneZeroNorth
	Failed -> stJudgePhoneLenNorth
:stErasePhoneZeroNorth
	[StrSub SR10,2,30]
	[Assign SR10,SR0]
	[Assign $CallerID,SR10]
	->stJudgePhoneLenNorth
:stJudgePhoneLenNorth
	[StrLen SR10]
	[Case IR0]
	Case(10) -> stNotCard
	Case(11) -> stNotCard
	Case -> stExit
//★★北方号码非法判断end/////////////////////////////////////

//★★号码绑定判断begin/////////////////////////////////////////
//★★号码绑定判断:是绑定则正常退出,否则进入卡认证
:stVerifyPhoneCard
	[Assign $CallerID,SR10]
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v011.vox"]
	[PlayFile  SR1]	//请选择卡的类型:九洲通卡请按1,网通橙卡请按2;
	StopPlayBack -> stPhoneInputCardType
	DialTerminate -> stPhoneInputCardType
	Failed -> stPhoneInputCardType
:stPhoneInputCardType
	[ Digit 5 ]
	StopDigits('1') -> stPhoneCardType
	StopDigits('2') -> stPhoneCardType
	StopDigits('3') -> stCardApp
	StopDigits -> stPhoneInputCardType
	TimeOut -> stExit
:stPhoneCardType
	[SToI SR0]
	[Assign $AccountKind,IR0]
	-> stVerifyPhone
:stCardApp
	[DeallocMediaDevice 1]
	[Assign $SMTitle,"REQUESTDATA"]
	[Exec 3]
	Passed -> stExit
	Failed -> stExit
:stVerifyPhone
	[Assign $AccountID,""]
	[VerifyUser $AccountID,-1] //认证卡号为空表示号码绑定判断
	Verify(0) -> stBack	//号码绑定
	Verify(108) -> stPhoneNotMoney	//卡余额不足
	Verify(141) -> stPhoneNotActive	//卡号未激活
	Verify(142) -> stPhoneUsed	//卡正在使用
	Verify(143) -> stPhoneExpDate	//卡过有效期
	Verify(144) -> stPhoneBlackList	//卡上黑名单
	Verify(145) -> stPhoneNotMoney	//卡余额达到限额
	Verify(146) -> stPhoneNotUsed	//卡不允许使用
	Verify(149) -> stBeginVerifyCard	//号码未绑定
	Verify -> stExit	//意外判断
	Failed -> stExit	//意外判断
:stPhoneNotMoney
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v023.vox"]
	[PlayFile SR1]	//您的卡号余额不足,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stPhoneNotActive
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v024.vox"]
	[PlayFile SR1]	//您的卡号未激活,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stPhoneUsed
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v025.vox"]
	[PlayFile SR1]	//您的卡号正在被使用,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stPhoneExpDate
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v026.vox"]
	[PlayFile SR1]	//您的卡号已过有效期,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stPhoneBlackList
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v027.vox"]
	[PlayFile SR1]	//您的卡号已上黑名单,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stPhoneNotUsed
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v028.vox"]
	[PlayFile SR1]	//您的卡号不允许被使用,谢谢使用,再见;
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
//★★号码绑定判断end///////////////////////////////////////////

//★★卡认证begin///////////////////////////////////////////////
//★★卡认证:通过则正常退出,否则退出系统
:stBeginVerifyCard
	[Inc IR23]
	-> stPlayInputCardID
:stPlayInputCardID
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v012.vox"]
	[PlayFile  SR1]	//请输入卡号,按#号键确认。
	StopPlayBack -> stInputCardID
	DialTerminate -> stInputCardID
	Failed -> stInputCardID
:stInputCardID
        [SetDTMF "#"]
        [Input @CardLen,30]
	StopDigits('#') -> stPlayInputCardPwd
        StopDigits      -> stBeginVerifyCard
        TimeOut         -> stPlayInputCardID
        [ParseParam SR0,1,"#"]
	[Assign $AccountID,SR0]
:stPlayInputCardPwd
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v013.vox"]
	[PlayFile SR1]	//请输入密码,按#号键确认。
	StopPlayBack  -> stCardInputPwd
	DialTerminate -> stCardInputPwd
	Failed        -> stCardInputPwd
:stCardInputPwd
        [SetDTMF "#"]
        [Input @PWDLen,20]
	StopDigits('#') -> stVerifyCard
        StopDigits      -> stPlayInputCardPwd
        TimeOut         -> stPlayInputCardPwd
        [ParseParam SR0,1,"#"]
	[Assign $Password,SR0]
:stVerifyCard
	[VerifyUser $AccountID,-1] //认证卡号
	Verify(0) -> stBack	//有效卡号
	Verify(108) -> stCardNotEnoughMoney	//余额不足
	Verify(110) -> stCardErr	//卡/用户不存在
	Verify(114) -> stCardErr	//卡号错误
	Verify(118) -> stExit	//消息包异常
	Verify(141) -> stCardNotActive	//卡号未激活
	Verify(142) -> stCardUsed	//卡号正在被使用
	Verify(143) -> stCardPassUsed	//卡过有效期
	Verify(144) -> stCardBlackList	//卡上黑名单
	Verify(145) -> stCardNotEnoughMoney	//卡余额达到限额
	Verify(146) -> stCardNotUsed	//卡不允许使用
	Verify(147) -> stExit	//系统故障
	Verify -> stExit	//意外处理
	Failed -> stExit	//失败
:stCardNotEnoughMoney
	[Less IR23,@PWDCount]
	Passed -> stCardNotEnoughMoneyVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardNotEnoughMoneyVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v016.vox"]
	[PlayFile SR1]	//您输入的卡号余额不足,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardErr
	[Less IR23,@PWDCount]
	Passed -> stCardErrVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardErrVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v014.vox"]
	[PlayFile SR1]	//您输入的卡号和密码错误,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardNotActive
	[Less IR23,@PWDCount]
	Passed -> stCardNotActiveVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardNotActiveVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v018.vox"]
	[PlayFile SR1]	//您输入的卡号未激活,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardUsed
	[Less IR23,@PWDCount]
	Passed -> stCardUsedVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardUsedVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v017.vox"]
	[PlayFile SR1]	//您输入的卡号正在被使用,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardPassUsed
	[Less IR23,@PWDCount]
	Passed -> stCardPassUsedVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardPassUsedVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v019.vox"]
	[PlayFile SR1]	//您输入的卡号正在被使用,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardBlackList
	[Less IR23,@PWDCount]
	Passed -> stCardBlackListVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardBlackListVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v020.vox"]
	[PlayFile SR1]	//您输入的卡号已上黑名单,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stCardNotUsed
	[Less IR23,@PWDCount]
	Passed -> stCardNotUsedVox
	Failed -> stPassCount //卡认证的超过输入次数
:stCardNotUsedVox
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v021.vox"]
	[PlayFile SR1]	//您输入的卡号不允许被使用,请重新输入。
	StopPlayBack  -> stBeginVerifyCard
	DialTerminate -> stBeginVerifyCard
	Failed        -> stBeginVerifyCard
:stPassCount
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v015.vox"]
	[PlayFile SR1]	//您输入的卡号和密码错误,谢谢使用,再见。
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
//★★卡认证end////////////////////////////////////////////////
:stBack
	[Assign IfCardUser,1]
	[Assign IR22,0]	//认证通过
	-> stExit
:stNotCard
	[Assign IfCardUser,0]
	[Assign IR22,0]
	->stExit
:stExit
	[Return IR22]
}
//★★用户认证函数end

⌨️ 快捷键说明

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