카카오페이 테스트 api 호출 에러

카카오페이를 적용하기 위해서 테스트 api를 호출하고 있는데요 저한테 에러 메세지를 보여줍니다.

에러메세지는 [“code”: -2, “msg”: cid can’t be null.]

cid 값이 null 이라는것 같은데요. 저는 cid값을 폼데이터에 넣어서 보내고 있는데 왜 이런 메세지가 뜨는지 모르겠습니다.

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        let url: URL = URL(string: "https://kapi.kakao.com/v1/payment/ready")!
        var dict = [String:String]()
        dict["cid"] = "TC0ONETIME"
        dict["partner_order_id"] = "partner_order_id"
        dict["partner_user_id"] = "partner_user_id"
        dict["item_name"] = "초코파이"
        dict["quantity"] = "1"
        dict["total_amount"] = "2200"
        dict["vat_amount"] = "200"
        dict["tax_free_amount"] = "0"
        dict["approval_url"] = "https://developers.kakao.com/success"
        dict["fail_url"] = "https://developers.kakao.com/fail"
        dict["cancel_url"] = "https://developers.kakao.com/cancel"
        
        do {
            try Web.postKakao(url: url, dict, encoding: .utf8, completionHandler: { data, response, error in
                guard error == nil && data != nil else {
                    if let err = error {
                        print(err.localizedDescription)
                    }
                    return
                }
                
                do {
                    let json = try JSONSerialization.jsonObject(with: data!, options: [])
                    Log.Debug(json)
                    guard let jsonArray = json as? [String: Any] else {
                        return
                    }
                    Log.Debug(jsonArray)
                    
                } catch {
                    Log.Error(error)
                }
            })
        } catch {
            Log.Error(error)
        }
        
    }

...
func postKakao(url: URL, _ parameters: [String: String], encoding: String.Encoding, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) throws {
        
        var postRequest: URLRequest = URLRequest(url: url)
        postRequest.httpMethod = "POST"
        
        let makeRandom = { UInt32.random(in: (.min)...(.max)) }
        let boundary = String(format: "------------------------%08X%08X", makeRandom(), makeRandom())
        
        let contentType: String = "application/x-www-form-urlencoded;charset=utf-8"
        
        var body = Data()
        
        for (rawName, rawValue) in parameters {
            if !body.isEmpty {
                body.append("\r\n".data(using: .utf8)!)
            }
            
            body.append("--\(boundary)\r\n".data(using: .utf8)!)
            
            guard
                rawName.canBeConverted(to: encoding),
                let disposition = "Content-Disposition: form-data; name=\"\(rawName)\"\r\n".data(using: encoding) else {
                    throw IXError.characterSetName
            }
            body.append(disposition)
            
            body.append("\r\n".data(using: .utf8)!)
            
            guard let value = rawValue.data(using: encoding) else {
                throw IXError.characterSetName
            }
            
            body.append(value)
        }
        
        body.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)
        
        postRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
        postRequest.setValue("KakaoAK \(Global.kakaoAdminKey)", forHTTPHeaderField: "Authorization")
        postRequest.httpBody = body
        session.dataTask(with: postRequest, completionHandler: completionHandler).resume()
        
    }

이 문제에 해결책은 없는건가요?