How to put a button on the N panel for URL?
Not sure what the issue is re registering... remove  bl_context since it is not required outside 'PROPERTIES' area.  Please in future paste the error message from the system console into your question.

Anyway here is a suggested edit.  Please take note of the class names. and registration code. If another class that needs registering, eg panel of operator, simply pop in the class and add to classes tuple.

Adds a Quick Links panel to 3d view UI "N" panel under the category "Links".

import bpy

links = {"Blender" : 'http://www.blender.org',
         "BSE" : "https://blender.stackexchange.com",
         }


class VIEW3D_PT_links(bpy.types.Panel):
    """Quick Links"""
    bl_label = "Quick Links"
    bl_idname = "VIEW3D_PT_links"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = 'Links'


    def draw(self, context):
        layout = self.layout
        col = layout.column()
        for name, url in links.items():
            op = col.operator('wm.url_open', text=name)
            op.url = url

classes = (
        VIEW3D_PT_links,
        )

def register():
    for cls in classes:
        bpy.utils.register_class(cls)


def unregister():
    for cls in reversed(classes):
        bpy.utils.unregister_class(cls)


if __name__ == "__main__":
    register()


edit: added links dictionary to add more links simply.