I wonder is it possible create by Zero Knowledge Proof to prove Two cipherTexts which are encrypted by same Public Key with Paillier Encryption has the same value inside but without decrypting the texts. I have access to the Public Key at the moment.
Yes, of course.
The first step is to notice is that if you have two ciphertexts $C_1, C_2$, they correspond to the exact same ciphertext iff $C_1 * C_2^{-1}$ (which is the Pallier subtraction of the two) is an encryption of 0, that is, if $C_1 C_2^{-1} = r^n \pmod{n^2}$ (for some integer $r$)
$C_1C_2^{-1}$ can be computed without knowledge of the private key (and so we'll denote that value as $C$), and so the only thing left is to generate a zero knowledge proof of the value $r$.
Now, the paper you cited handles a more general case (where you have several values $D_1, D_2, ..., D_n$, and want to show that one of them is an encryption of 0, but don't want to leak which one it is). If we discard the logic that handles several values, we are left with this cut-and-choose protocol:
Prover selects a random value $s$ [1] and publishes $s^n \bmod n^2$
Verifies says either "show me $s$" or "show me $sr$"
Prover displays the requested value
If the verifier asked for $s$ and gets a value $s'$, he just verifies that $s'^n$ is the $s^n$ value he was given.
If the verifier asked for $sr$, and gets a value $s'$, he just verifies that $sr'^n$ is the value $s^n \cdot C = s^nr^n$
It should be clear that neither choice leaks the value $r$, and that the only way that both choices are answerable is if, in fact, that there does in fact exist a value $r$.
The probability of someone cheating without being detected is $2^{-1}$, so to get that probability down to a reasonable level, you need to repeat this procedure a number of times, say, 64 or 128 times.
The obvious question is "how does the prover know $r$?". Well, if he is the one generating $C_1, C_2$, the obvious response is "he remembers the $r_1, r_2$ values he used to encrypt them, and computes it for the corresponding $C$ value. If he is just given a (say) $C_1$ value, well, even though he can himself decrypt it, I don't know of a way for him to recover the corresponding $r$ value - he'd need to use a different ZKP technique.
I glanced through your code - I didn't see where you tried to do this sort of logic; on the other hand, I didn't look that hard...
[1]: The paper uses the symbol $\omega$ to denote this random value.