Seems liek the problem is that you're giving actual values in your Pact. It's matching both the type and the value. That's why it's not working the way you want.
When you use something like stringType("foo", "foo"), Pact thinks you want the key "foo" to have the value "foo". But you just want any string there right?
Try using stringType("foo") without the extra "foo". This way Pact knows you want a string but doesn't care what the value is.
Same with your lists. Make sure when you use eachLike, you're not setting exact values you don't want to match.
Remove the specific values in your Pact setup and just tell it the types. Then Pact will only match the types and not the actual data. let me know if it worked.