This is a familiar tale. The client doesn't realize that having a website designed and getting it to rank well are TWO SEPARATE SERVICES. It also seems like you might not have been good at explaining that distinction.
Back when I did web-for-hire, a large number of my clients seemed to just expect that I would get them to rank well. I started adding SEO as an optional add-on, but then I stopped doing that, as it didn't seem right for me to help websites rank well that didn't *deserve* to rank well.
My suggestion: Give him a price for designing the website and a *SEPARATE* price for the SEO. Make the price of the SEO astronomical (to show the client that it's really a separate service, and because it will indeed be hard for you to get the text written and get them to rank well), but give them a guarantee. (e.g., Rank in the top A results in Google for B out of C search queries within D months. After you achieve that, there's either no continuing guarantee, or you charge a monthly fee for maintenance to maintain the rankings, and if the rankings drop out of the guaranteed range then you refund E months of maintenance fees.