Try this one -
ALTER PROCEDURE [dbo].[SearchPayment]
@PayAccountin AS VARCHAR(10),
@PayCustNamein AS VARCHAR(30),
@PayAmountin AS INT,
@PayAmountPaidin AS INT,
@PayResponsein AS CHAR (2),
@PayRefNoin AS VARCHAR (120),
@PayScreenTextin AS VARCHAR (100),
@PayReceiptTextin AS VARCHAR (350),
@PayDatetimein AS VARCHAR(50),
@PayBankCodein AS VARCHAR (6)
AS BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @OwnTran BIT
SET @OwnTran = 0
IF @@TRANCOUNT = 0
BEGIN
SET @OwnTran = 1
BEGIN TRAN
END
BEGIN TRY
DECLARE @SQLQuery NVARCHAR(4000)
SELECT @SQLQuery = '
IF OBJECT_ID (N''tempdb.dbo.##test'') IS NOT NULL
DROP TABLE ##test
SELECT *
INTO ##test
FROM payment
WHERE PayId is not null '
+ ISNULL(' And (PayAccount LIKE ''%''' + @PayAccountin + '''%'')', '')
+ ISNULL(' And (PayCustName LIKE ''%''' + @PayCustNamein + '''%'')', '')
+ ISNULL(' And (PayAmount LIKE =' + CAST(@PayAmountin AS VARCHAR(5)) + ')', '')
+ ISNULL(' And (PayAmountPaid =' + CAST(@PayAmountPaidin AS VARCHAR(5)) + ')', '')
+ ISNULL(' And (PayResponse LIKE ''%''' + @PayResponsein + '''%'')', '')
+ ISNULL(' And (PayRefNo LIKE ''%''' + @PayRefNoin + '''%'')', '')
+ ISNULL(' And (PayBankCode LIKE ''%''' + @PayAccountin + '''%'')', '')
+ ISNULL(' And (cast(PayDatetime as date) = convert(date, @PayDatetimein , 103))', '')
EXEC sys.sp_Executesql @SQLQuery
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN
END CATCH
IF @OwnTran = 1
AND @@TRANCOUNT > 0
BEGIN
COMMIT TRAN
END
END