You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
4.6 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[PROC_OTP_SEND_TXN] Script Date: 7/4/2019 11:35:48 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  9. --EXEC PROC_OTP_SEND_TXN @FLAG = 'RE-SEND', @CUSTOMERID = '1'
  10. --EXEC PROC_OTP_SEND_TXN @FLAG = 'VERIFY', @CUSTOMERID = '1', @OTP_NUMBER = '6740'
  11. --exec proc_CallToSendSMS @FLAG = 'I',@SMSBody='Your GME Wallet is successfully credited by KRW 10000 Thank you for using GME.',@MobileNo='01095215079'
  12. --SELECT DBO.decryptDb(OTP_NUMBER), DATEDIFF(MI, ASSIGNED_DATE, GETDATE()),* FROM TBL_OTP_FOR_AUTODEBIT
  13. ALTER PROC [dbo].[PROC_OTP_SEND_TXN]
  14. (
  15. @FLAG VARCHAR(20)
  16. ,@OTP_NUMBER VARCHAR(10) = NULL
  17. ,@CUSTOMERID BIGINT = NULL
  18. ,@CUSTOMEREMAIL VARCHAR(100) = NULL
  19. ,@AMT VARCHAR(100) = NULL
  20. ,@ACCOUNTNUM VARCHAR(50) = NULL
  21. ,@KFTCID VARCHAR(50) = NULL
  22. )
  23. AS
  24. SET NOCOUNT ON;
  25. SET XACT_ABORT ON;
  26. BEGIN
  27. DECLARE @MOBILE_NUMBER VARCHAR(15)
  28. DECLARE @SMS_MESSAGE VARCHAR(200)
  29. IF @KFTCID IS NOT NULL
  30. SELECT @ACCOUNTNUM = accountNum FROM KFTC_CUSTOMER_SUB(NOLOCK) WHERE RowId = @KFTCID
  31. SET @AMT = REPLACE(@AMT,'.00','')
  32. SET @ACCOUNTNUM = '**'+RIGHT(@ACCOUNTNUM,6)
  33. IF @FLAG = 'SEND'
  34. BEGIN
  35. IF NOT EXISTS (SELECT 1 FROM customerMaster (NOLOCK) WHERE email = @CUSTOMEREMAIL AND customerId = @CUSTOMERID)
  36. BEGIN
  37. EXEC proc_errorHandler 1, 'Invalid Request!', NULL;
  38. RETURN
  39. END
  40. DECLARE @RANDOM_NUMBER VARCHAR(4) = RIGHT(CHECKSUM(NEWID()),4)
  41. SELECT @MOBILE_NUMBER = mobile FROM customerMaster(NOLOCK) WHERE customerId = @CUSTOMERID
  42. SET @SMS_MESSAGE = 'Your GME OTP = '+ CAST(@RANDOM_NUMBER AS VARCHAR)
  43. IF EXISTS(SELECT 1 FROM TBL_OTP_FOR_AUTODEBIT (NOLOCK) WHERE CUSTOMERID = @CUSTOMERID)
  44. BEGIN
  45. UPDATE TBL_OTP_FOR_AUTODEBIT
  46. SET OTP_NUMBER = DBO.FNAEncryptString(@RANDOM_NUMBER),
  47. ASSIGNED_DATE = GETDATE()
  48. WHERE CUSTOMERID = @CUSTOMERID
  49. EXEC proc_CallToSendSMS @FLAG = 'I',@SMSBody=@SMS_MESSAGE, @MobileNo=@MOBILE_NUMBER
  50. EXEC proc_errorHandler 0, '4 digit OTP code has been sent to your mobile.', @RANDOM_NUMBER;
  51. RETURN
  52. END
  53. ELSE
  54. BEGIN
  55. INSERT INTO TBL_OTP_FOR_AUTODEBIT(CUSTOMERID, OTP_NUMBER, ASSIGNED_DATE)
  56. SELECT @CUSTOMERID, DBO.FNAEncryptString(@RANDOM_NUMBER), GETDATE()
  57. EXEC proc_CallToSendSMS @FLAG = 'I',@SMSBody=@SMS_MESSAGE, @MobileNo=@MOBILE_NUMBER
  58. EXEC proc_errorHandler 0, '4 digit OTP code has been sent to your mobile.', @RANDOM_NUMBER;
  59. RETURN
  60. END
  61. END
  62. ELSE IF @FLAG = 'RE-SEND'
  63. BEGIN
  64. IF NOT EXISTS (SELECT 1 FROM customerMaster (NOLOCK) WHERE email = @CUSTOMEREMAIL AND customerId = @CUSTOMERID)
  65. BEGIN
  66. EXEC proc_errorHandler 1, 'Invalid Request!', NULL;
  67. RETURN
  68. END
  69. SET @RANDOM_NUMBER = RIGHT(CHECKSUM(NEWID()),4)
  70. SELECT @MOBILE_NUMBER = mobile FROM customerMaster WHERE customerId = @CUSTOMERID
  71. SET @SMS_MESSAGE = 'Your GME OTP = '+ CAST(@RANDOM_NUMBER AS VARCHAR)
  72. IF EXISTS(SELECT 1 FROM TBL_OTP_FOR_AUTODEBIT (NOLOCK) WHERE CUSTOMERID = @CUSTOMERID)
  73. BEGIN
  74. UPDATE TBL_OTP_FOR_AUTODEBIT
  75. SET OTP_NUMBER = DBO.FNAEncryptString(@RANDOM_NUMBER),
  76. ASSIGNED_DATE = GETDATE()
  77. WHERE CUSTOMERID = @CUSTOMERID
  78. EXEC proc_CallToSendSMS @FLAG = 'I',@SMSBody=@SMS_MESSAGE, @MobileNo=@MOBILE_NUMBER
  79. EXEC proc_errorHandler 0, 'Success!', @RANDOM_NUMBER;
  80. RETURN
  81. END
  82. ELSE
  83. BEGIN
  84. INSERT INTO TBL_OTP_FOR_AUTODEBIT(CUSTOMERID, OTP_NUMBER, ASSIGNED_DATE)
  85. SELECT @CUSTOMERID, DBO.FNAEncryptString(@RANDOM_NUMBER), GETDATE()
  86. EXEC proc_CallToSendSMS @FLAG = 'I',@SMSBody=@SMS_MESSAGE, @MobileNo=@MOBILE_NUMBER
  87. EXEC proc_errorHandler 0, 'Success!', @RANDOM_NUMBER;
  88. RETURN
  89. END
  90. END
  91. ELSE IF @FLAG = 'VERIFY'
  92. BEGIN
  93. DECLARE @ASSIGNED_DATE DATETIME = NULL
  94. IF LEN(@OTP_NUMBER) <> 4
  95. BEGIN
  96. EXEC proc_errorHandler 1, 'The OTP you entered is invalid. Please enter a valid OTP(4 digit)!', @RANDOM_NUMBER;
  97. RETURN
  98. END
  99. SELECT @RANDOM_NUMBER = @OTP_NUMBER,
  100. @ASSIGNED_DATE = ASSIGNED_DATE
  101. FROM TBL_OTP_FOR_AUTODEBIT (NOLOCK)
  102. WHERE CUSTOMERID = @CUSTOMERID
  103. AND OTP_NUMBER = DBO.FNAEncryptString(@OTP_NUMBER)
  104. IF @ASSIGNED_DATE IS NULL
  105. BEGIN
  106. EXEC proc_errorHandler 1, 'The 4 digit pin OTP entered does not match. Please try again!', @RANDOM_NUMBER;
  107. END
  108. ELSE IF DATEDIFF(MI, @ASSIGNED_DATE, GETDATE()) >= 2
  109. BEGIN
  110. EXEC proc_errorHandler 1, 'The 4 digit OTP you entered is expired. Please click on resend OTP!', @RANDOM_NUMBER;
  111. END
  112. ELSE
  113. BEGIN
  114. EXEC proc_errorHandler 0, 'Success!', @RANDOM_NUMBER;
  115. END
  116. END
  117. END
  118. GO