     public typealias DeliverCompletionHandler = (Result<ResponseJSON?, Error>) -> Void
     public typealias OAuthCompletionHandler = (_ info: [String: Any]?, _ response: URLResponse?, _ error: Swift.Error?) -> Void
     public typealias WeChatOAuthForCodeCompletionHandler = (Result<String, Error>) -> Void
-    public typealias PayCompletionHandler = (_ result: Bool) -> Void
+    public typealias PayCompletionHandler = (Result<Void, Error>) -> Void
     public typealias LaunchCompletionHandler = (_ result: LaunchResult) -> Void
 
     public enum LaunchResult {

            }
            // Pay
            if urlString.contains("://pay/") {
                var result = false
                defer {
                    shared.payCompletionHandler?(result)
                }
                let queryDictionary = url.monkeyking_queryDictionary
                guard let ret = queryDictionary["ret"] else { return false }
                result = (ret == "0")
                return result
            }


                    let memo = memo["memo"] as? String ?? "Unknow Error"
                    let error = NSError(domain: memo, code: -1, userInfo: nil)
                    shared.oauthCompletionHandler?(nil, nil, error)
                    shared.payCompletionHandler?(.failure(.apiRequest(.invalidParameter)))
                    return false
                }

