Unity 5.5.0 Collider2D/Rigidbody2D not working

So im making a 2d platformer game.
And i want my player to be able to collide with an enemy slime.
It just can’t register the collide. Can someone tell me why it isn’t registering?
This is my current playerController code: (the collision code is on the bottom)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

[RequireComponent(typeof(PlayerPhysics))]
public class PlayerController : MonoBehaviour {

[HideInInspector] public bool facingRight = true;

private Rigidbody2D rb2d;
private bool getKeyA;
private bool getKeyD;

public float jumpHeight;
public float speed;
public float acceleration;

private bool doubleJumped;
private Animator anim;

private float currentSpeed;
private float targetSpeed;
private Vector2 amountToMove;

private PlayerPhysics playerPhysics;

//groundcheck variables
public Transform groundCheck;
public float groundCheckRadius;
public LayerMask whatIsGround;
private bool grounded;

//combat variables
public int health = 3;
public float invincibleTime = 2;

void Start () {
	rb2d = GetComponent<Rigidbody2D> ();
	getKeyA = Input.GetKey (KeyCode.A);
	getKeyD = Input.GetKey (KeyCode.D);
	playerPhysics = GetComponent<PlayerPhysics> ();
	anim = GetComponent<Animator> ();
}

void FixedUpdate() 
{
	grounded = Physics2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround);
}

void Update () 
{
	targetSpeed = Input.GetAxisRaw ("Horizontal") * speed;
	currentSpeed = IncrementTowards (currentSpeed, targetSpeed, acceleration);
	amountToMove.x = currentSpeed;

	playerPhysics.Move (amountToMove * Time.deltaTime);

	if (transform.position.y <= -30) 
	{
		SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
	}

	if (Input.GetKey (KeyCode.D) && grounded || Input.GetKey (KeyCode.A) && grounded) {
		anim.SetInteger ("int", 1);
	} else if (!getKeyA && grounded || !getKeyD && grounded) {
		anim.SetInteger ("int", 0);
		currentSpeed = 0;
	} 

	if (currentSpeed > 0 && !facingRight)
		Flip ();
	if (currentSpeed < 0 && facingRight)
		Flip ();

	if (Input.GetKeyDown (KeyCode.Space) && grounded)
	{
		rb2d.velocity = new Vector2 (0, jumpHeight);
	}

		if (!grounded && rb2d.velocity.y > 0)
		anim.SetInteger ("int", 2);
	
		if (!grounded && rb2d.velocity.y < 0)
		anim.SetInteger ("int", 3);

	if (Input.GetKeyDown (KeyCode.Space) && !doubleJumped && !grounded) 
	{
		GetComponent<Rigidbody2D> ().velocity = new Vector2 (0, jumpHeight);
		doubleJumped = true;
		anim.SetInteger ("int", 2);
	}

	if (grounded)
		doubleJumped = false;
		
	if (Input.GetKeyDown(KeyCode.R))
		SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}

private float IncrementTowards(float n, float target, float speed) {
	if (n == target) {
		return n;
	} 
	else {
		float dir = Mathf.Sign (target - n);
		n += speed * Time.deltaTime * dir;
		return (dir == Mathf.Sign (target - n)) ? n : target;
	}
}

void Flip()
{
	facingRight = !facingRight;
	Vector3 theScale = transform.localScale;
	theScale.x *= -1;
	transform.localScale = theScale;
}

void Hurt()
{
	health -= 1;
	if (health <= 0 )
		SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
	else
		anim.SetInteger ("int", 4);
}

void onCollisionEnter2D(Collision2D other)
{
	if (other.gameObject.tag == "Enemy")
	{
		Debug.Log ("COLLISION OCCURED");
		Hurt ();
	}
}

}

CaSE sEnsITiviTY matters.

The callback is called OnCollisionEnter2D not onCollisionEnter2D