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

📄 97充值--网关.sc

📁 用于收费语音服务的电话充值业务
💻 SC
📖 第 1 页 / 共 2 页
字号:
	[Assign SR2,"select func_verify_payinfo('"]
	[StrCat SR2,ServiceId]
	[StrCat SR2,"','"]
	[StrCat SR2,wsChoice]
	[StrCat SR2,"','"]
	[StrCat SR2,$CallerID]
	[StrCat SR2,"##','"]
	[StrCat SR2,LocalAreaCode]
	[StrCat SR2,"') from dual "]
	[ExecSQL SR2]	//执行SQL语句
	Passed -> stJudgePayment
	Failed -> stSystemError
	TimeOut -> stSystemError
:stUser
	[Assign SR2,"select func_verify_payinfo('"]
	[StrCat SR2,ServiceId]
	[StrCat SR2,"','"]
	[StrCat SR2,wsChoice]
	[StrCat SR2,"','"]
	[StrCat SR2,$CallerID]
	[StrCat SR2,"','"]
	[StrCat SR2,LocalAreaCode]
	[StrCat SR2,"') from dual "]
	[ExecSQL SR2]	//执行SQL语句
	Passed -> stJudgePayment
	Failed -> stSystemError
	TimeOut -> stSystemError
:stSystemError
	[Assign SR1,SR29]
	[StrCat SR1, "v030.vox"]
	[PlayFile SR1]	//系统故障,谢谢使用,再见。
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
:stJudgePayment
	[ParseParam FD0,1,"^"]
	[Assign M_AppNO,SR0]
	[ParseParam FD0,2,"^"]
	[Assign M_PayMent,SR0]
	[ParseParam FD0,3,"^"]
	[Assign M_CallerID,SR0]
	[SToF M_PayMent]
	[Less FR0,999]
	Passed -> stBack
	Failed -> stGreatPayInfo
:stBack
	[Assign IR22,0]
	-> stExit
:stGreatPayInfo
	[Assign IR22,2]
	-> stExit
:stExit
	[Return IR22]
}
//★★判断主叫号码业务合法函数end


//★★用户认证函数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----失败

//★★目前针对小额支付号码由于计费系统已经判断了号码的预/后付费,所以
//★★我们只需把号码规整到一个不带0的区号加真实号码,长度为10/11位,便于记录到数据库和封顶判断
//★★鉴于目前平台的稳定性,我们还做了south.ini文件的判断

:stWait
	[Assign IR22,1]
	[Assign IR23,0]	//判断重输卡号次数
	[Assign SR29,".\vox\"]
	-> stRedirectInd
:stRedirectInd
	[Equal $RedirectInd,1]
	Passed -> stExit
	Failed -> stFeeLimited
:stFeeLimited
	[Equal  FeeLimited,100]
	Passed -> stUserCheckCard		//是从业务限费返回的,需进行预付费验证
	Failed -> stVerifyCaller               //否则就是呼叫开始时的主叫认证
//★★用户从后付费走到预付费begin
:stUserCheckCard
	[ClearDTMF]
	[SetDTMF "?"]
	[Assign SR1,SR29]
	[StrCat SR1, "v029.vox"]
	[PlayFile  SR1]	//对不起,你的号码已经达到本月信息费的限额,请改用卡消费,请选择卡的类型:九洲通卡请按1,网通橙卡请按2;申请九洲通卡请按3
	StopPlayBack -> stUserCardType
	DialTerminate -> stUserCardType
	Failed -> stUserCardType
:stUserCardType
	[ Digit 5 ]
	StopDigits('1') -> stPhoneCardType
	StopDigits('2') -> stPhoneCardType
	StopDigits('3') -> stCardApp
	StopDigits -> stUserCheckCard
	TimeOut -> stExit
//★★用户从后付费走到预付费end
//★★刚进平台的判断begin
:stVerifyCaller
	[Assign SR10,$CallerID]
	[Assign $Password,""]
	[Assign $AccountKind,0]
	[Assign $Password,""]
	[VerifyUser $AccountID,-1]
	Verify(0) -> stIfPhoneZeroBegin
	Verify(150) -> stVerifyPhoneCard
	Verify(151) -> stVerifyPhoneCard
	Verify(152) -> stVerifyPhoneCard
	Verify -> stSystemError
	Failed -> stSystemError
	TimeOut -> stSystemError
//★★刚进平台的判断end
//★★规整号码begin
:stIfPhoneZeroBegin
	[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 -> stVerifyPhoneLaw
:stJudgePhone
	[StrSub SR10,1,1]
	[SToI SR0]
	[Less IR0,3]
	Passed -> stEarsePhone2Bit
	Failed -> stEarsePhone3Bit
:stEarsePhone2Bit
	[StrSub SR10,3,30]
	[Assign SR10,SR0]
	-> stVerifyPhoneLaw
:stEarsePhone3Bit
	[StrSub SR10,4,30]
	[Assign SR10,SR0]
	-> stVerifyPhoneLaw
:stVerifyPhoneLaw
	[Assign $CallerID,SR10]
	[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	////长度为10位或11位是合法,其它走预付费
	Case(11) -> stIfHEB
	Case -> stVerifyPhoneCard
:stIfHEB
	[StrSub SR10,1,3]
	[SToI SR0]
	[Case IR0]
	Case(451) -> stNotCard
	Case(411) -> stNotCard
	Case -> stVerifyPhoneCard
//★★规整号码end

//★★号码绑定判断begin/////////////////////////////////////////
//★★号码绑定判断:是绑定则正常退出,否则进入卡认证
:stVerifyPhoneCard
	[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 -> stSystemError	//意外判断
	Failed -> stSystemError	//意外判断
	TimeOut -> stSystemError
: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(141) -> stCardNotActive	//卡号未激活
	Verify(142) -> stCardUsed	//卡号正在被使用
	Verify(143) -> stCardPassUsed	//卡过有效期
	Verify(144) -> stCardBlackList	//卡上黑名单
	Verify(145) -> stCardNotEnoughMoney	//卡余额达到限额
	Verify(146) -> stCardNotUsed	//卡不允许使用
	Verify -> stSystemError	//意外处理
	Failed -> stSystemError	//失败
	TimeOut -> stSystemError
: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////////////////////////////////////////////////
:stSystemError
	[Assign SR1,SR29]
	[StrCat SR1, "v030.vox"]
	[PlayFile SR1]	//系统故障,谢谢使用,再见。
	StopPlayBack  -> stExit
	DialTerminate -> stExit
	Failed        -> stExit
: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 + -