package com.xiaomi.xms.sales.request;
import android.content.Context;
import android.text.TextUtils;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import com.xiaomi.xms.sales.ShopApp;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.util.Device;
import com.xiaomi.xms.sales.util.LogUtil;
import com.xiaomi.xms.sales.xmsf.account.LoginManager;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class HostManager {
private static final String TAG = "HostManager";
public static final class Parameters {
public static final class Keys {
// 是否压缩结果
public static final String COMPRESS = "compressed";
public static final String COMPRESS_HEADER = "Compressed";
// 机型
public static final String PHONE_MODEL = "phone_model";
public static final String PHONE_DEVICE = "phone_device";
// APP Id
public static final String CLIENT_ID = "client_id";
// 目录 Id
public static final String CATEGORY_ID = "cateid";
// categoryTree rootid
public static final String ROOT_ID = "root_id";
// 分页页数
public static final String PAGE_INDEX = "pageindex";
// 每页大小
public static final String PAGE_SIZE = "pagesize";
// 商品列表
public static final String PRODUCT = "product";
// Search关键字
public static final String KEYWORD = "keyWord";
// 商品Id
public static final String PRODUCT_ID = "product_id";
// 套餐商品ids
public static final String ITEM_IDS = "itemIds";
// 来源
public static final String SOURCE = "source";
// 地址Id
public static final String ADDRESS_ID = "address_id";
// 手机分辨率
public static final String DEVICE_DENSITY = "display_density";
// 订单号
public static final String ORDER_ID = "order_id";
// 支付途径
public static final String PAY_ONLINE_BANK = "payOnlineBank";
// User id
public static final String USER_ID = "userId";
// Pass token
public static final String PASS_TOKEN = "passToken";
// Service token
public static final String SERVICE_TOKEN = "serviceToken";
// Cookies 中表示Android app的字段
public static final String COOKIE_NAME_PLATFORM = "Android_native";
// Security payment key
public static final String SECURITY_PAYMENT_KEY = "security";
public static final String ADDRESS_CONSIGNEE = "consignee";
public static final String ADDRESS_PROVINCE = "province_id";
public static final String ADDRESS_CITY = "city_id";
public static final String ADDRESS_DISTRICT = "district_id";
public static final String ADDRESS_LOCATION = "address";
public static final String ADDRESS_ZIPCODE = "zipcode";
public static final String ADDRESS_TEL = "tel";
public static final String CONSUMPTION = "consumption";
public static final String PROMOTION_ID = "promotion_id";
public static final String PROMOTION_TYPE = "promotion_type";
public static final String SECURITY_CODE = "security_code";
public static final String ITEM_ID = "item_id";
public static final String MIHOMEBUY_ID = "client_mihome_id";
// update url
public static final String REQUEST_DATA = "requestData";
public static final String DATA = "data";
public static final String PACKAGE = "package";
public static final String VERSION = "version";
// checkcode
public static final String CHECKCODE_TYPE = "type";
public static final String CHECKCODE_CODE = "checkcode";
// fcode
public static final String FCODE = "fcode";
public static final String MIHOME_ID = "mihomeid";
public static final String MI_PHONE_TYPE = "phone_type";
public static final String ADAPT_PHONE = "adapt";
public static final String ADAPT_SIMPLE = "simple";
// Review
public static final String GOODS_ID = "goods_id";
public static final String QUALITY_GRADE = "quality_grade";
public static final String SERVICE_GRADE = "service_grade";
public static final String DELIVER_GRADE = "deliver_grade";
public static final String COMMENT_CONTENT = "comment_content";
// 米家可售库存
public static final String PICKUP_ID = "pickup_id";
}
public static final class Values {
// 每页请求数量
public static final int PAGESIZE_VALUE = 20;
// APP Id
public static final String CLIENT_ID = "180100031022";
// 支付宝支付途径
public static final String ALIPAY_TYPE = "alipay";
public static final String COOKIE_VALUE_PLATFROM = "platform";
public static final String CHECKCODE_TYPE_GET = "get";
public static final String CHECKCODE_TYPE_CHECK = "check";
// 来源
public static final String SOURCE_FCODE = "fcode";
public static final String SOURCE_SHAKE = "ernie";
/** from online, not from mi-home */
public static final String MIHOME_BUY_NULL = "client_mihome_id_null";
public static final String ADAPT_SIMPLE_VALUE = "2";
}
}
public static boolean isTest = true; //是否是测试环境
public static final String URL_XMS_SALE_API = isTest ? "http://10.236.121.5:9000/saleapi" : "https://pos.be.xiaomi.com/saleapi";
public static final String URL_M_XMS_SALE_API = isTest ? "http://10.236.121.29/call/salesWriteLog" : "http://m.xms.be.xiaomi.com/call/salesWriteLog";
public static final class Method {
public static final String METHOD_GETUSERINFO = "sales.getUserInfo"; // 用户信息
public static final String METHOD_GOODSLISTBYCATEID = "sales.getGoodsListByCateId"; // 分类商品信息列表
public static final String METHOD_CARTMANAGEMENT = "sales.salesCartManagement"; // 购物车管理(修改、删除)
public static final String METHOD_GETSALESCARTLIST = "sales.getSalesCartList"; // 查询购物车列表
public static final String METHOD_CREATESALESORDE = "sales.createSalesOrder"; // 创建订单
public static final String METHOD_GETSALESORDERLIST = "sales.getSalesOrderListByOrderStatus"; // 查询订单列表
public static final String METHOD_GETSALESORDERINFO = "sales.getSalesOrderInfobyServiceNumber"; // 查询订单详情
public static final String METHOD_CANCELSALESORDER = "sales.cancelSalesOrder"; // 查询订单详情
public static final String METHOD_UPDATECONSIGNEEINF = "sales.updateConsigneeInfo"; // 更新订单的用户信息
public static final String METHOD_GETCONSIGNEEINFO = "sales.getConsigneeInfoByServiceNumber"; // 获得订单的用户信息
public static final String METHOD_GETSALESORDERCOUNT = "sales.getSalesOrderCount"; // 获得订单的用户信息
public static final String METHOD_GETSTOCKNUM = "sales.getStocknumbyGoodsId"; // 根据goodid获取米家商品库存信息
public static final String METHOD_SAVEPAYINFO = "pay.savePayInfo"; // 支付成功,更新服务器
public static final String METHOD_REFUNDORDERO = "pay.refundOrder"; // 申请退款
public static final String METHOD_GETBATCHEDVIEW = "sales.getBatchedViewByCommodityId"; // 读取套餐类型商品的定制信息
public static final String METHOD_SEARCHGOODSLIST = "sales.searchGoodsListByKeyWord"; // 读取套餐类型商品的定制信息
public static final String METHOD_GETEDITORDERLIST = "sales.getModifiableSalesOrderListByPage"; // 可修改的订单列表
public static final String METHOD_ADDPRODUCTBYNFC = "sales.addDiscoveredNFCToShoppingCart"; // 读取NFC商品信息,并添加到购物车
public static final String METHOD_WRITEPRODUCTTONFC = "sales.createNFCRecord"; // 写入商品信息到NFC标签
public static final String METHOD_CHECKUPDATE = "sales.getLatestSalesApp"; // 检查版本更新
public static final String METHOD_GETSKU = "sales.transformSKU"; //转为10位SKU
public static final String METHOD_GETPRODUCTINFO = "sales.getProductInfo"; //获取商品信息
public static final String METHOD_WIPEZERO = "sales.wipeZero"; //获取抹零后的总价
public static final String METHOD_PACKED = "sales.packedAndOut"; //现货销售配货出库妥投/存储打单信息等
public static final String METHOD_DEVICE = "sales.deviceList"; //获取打印机或POS机信息
public static final String METHOD_SAVE_PRINTER = "sales.savePrinter"; //存储打印机信息
public static final String METHOD_PAY_CHECK = "pay.payCheck"; //检查支付信息,主要是检测IP等或添加支付信息
public static final String METHOD_UPLOAD_LOG = "sales.salesWriteLog"; //上传Log文件
public static final String METHOD_GET_SERVICENUMBER = "sales.getSalesServiceNumber"; //获取订单号
public static final String METHOD_DAYREFUNDCONFIRM = "pay.dayRefundConfirm"; // 当日退货确认
public static final String METHOD_DAYREFUNDREQUEST = "pay.dayRefundRequest"; // 快速退货申请接口
public static final String METHOD_DAYEXCHANGEREQUEST = "sales.replaceGoods"; // 快速换货接口
}
public static final class YeePay {
public static final String SERVERIP = isTest ? "119.161.147.120" : "59.151.25.202";
public static final int SERVERPORT = isTest ? 28100 : 28000;
}
public static final String TEST_SHOPAPI_ROOT = "http://shopapi.b2c.srv"; //测试的会有问题,用正式的
public static final String FORMAL_SHOPAPI_ROOT = "http://shopapi.b2c.srv";
public static final String URL_SHOPAPI_ROOT = ShopApp.isUserDebug() ? TEST_SHOPAPI_ROOT:FORMAL_SHOPAPI_ROOT;
public static final String URL_SHOPAPI_PRODUCT = URL_SHOPAPI_ROOT +"/product/goodsView";
public static final String URL_SHOPAPI_TRANSFORM = URL_SHOPAPI_ROOT +"/product/transform";
public static final String TEST_URL_XIAOMI_M = "http://mtest.n.xiaomi.com/";
public static final String TEST_URL_XIAOMI_SHOPAPI_ROOT = "http://test.app.shopapi.xiaomi.com/v2/";
public static final String TEST_DOMAIN_APP_SHOPAPI = "app.shopapi.xiaomi.com";
public static final String FORMAL_URL_XIAOMI_M = "http://m.xiaomi.com/";
public static final String FORMAL_URL_XIAOMI_SHOPAPI_ROOT = "http://app.shopapi.xiaomi.com/v2/";
public static final String FORMAL_DOMAIN_APP_SHOPAPI = "app.shopapi.xiaomi.com";
// cookie form campaign webview
public static final String DOMAIN_BASE = "xiaomi.com";
public static final String DOMAIN_ACCOUNT = "account.xiaomi.com";
public static final String DOMAIN_T_HD = "t.hd.xiaomi.com";
public static final String DOMAIN_APP_SHOPAPI = ShopApp.isUserDebug() ? TEST_DOMAIN_APP_SHOPAPI
: FORMAL_DOMAIN_APP_SHOPAPI;
/** 各个业务的Authority **/
public static final String URL_XIAOMI_M = ShopApp.isUserDebug() ? TEST_URL_XIAOMI_M
: FORMAL_URL_XIAOMI_M;
public static final String URL_XIAOMI_SHOPAPI_ROOT = ShopApp.isUserDebug() ? TEST_URL_XIAOMI_SHOPAPI_ROOT
: FORMAL_URL_XIAOMI_SHOPAPI_ROOT;
public static final String URL_UPDATE_BASE = "http://update.miui.com/updates/update_info/";
public static final String URL_XIAOMI_SHOPAPI_PRODUCT = URL_XIAOMI_SHOPAPI_ROOT + "product/";
public static final String URL_XIAOMI_SHOPAPI_PAY = URL_XIAOMI_SHOPAPI_ROOT + "pay/";
// 商城问题反馈帖子
public final static String URL_XIAOMI_SHOP_GUEST_URL = "http://bbs.xiaomi.cn/thread-5295957-1-1.html";
// 小米手机立即购买跳转URL
public final static String URL_XIAOMI_SHOP_MIPHONE_IMMEDIATELY_BUY_URL = "http://m.xiaomi.com/index.html#ac=home&op=selectversion&"
+ Parameters.Keys.MI_PHONE_TYPE + "=";
// 支付失败可能原因说明URL
public final static String URL_XIAOMI_SHOP_PAYMENT_EXPLAIN = "http://faq.xiaomi.cn/?note/view/19.html";
/** 产品子业务路径 **/
// http://app.shopapi.xiaomi.com/v2/apkversion/check?client_id=180100031013
public static final String DIRECTORY_CHECK_UPDATE = "apkversion/check";
public static final String DIRECTORY_UPDATE_INFO = "apkversion/info";
public static final String DIRECTORY_CATEGORY = "category";
public static final String DIRECTORY_CATEGORY_TREE = "categoryTree";
public static final String DIRECTORY_USERINFO = "user/show";
public static final String DIRECTORY_ADDRESSINFO_LIST = "address/list";
public static final String DIRECTORY_ADDRESSINFO_DEL = "address/del";
public static final String DIRECTORY_ADDRESSINFO_EDIT = "address/save";
public static final String DIRECTORY_ADDRESSINFO_ADD = "address/add";
public static final String DIRECTORY_PRODUCT = "allProductList";
public static final String DIRECTORY_SHOPPING_CARTLIST = "shopping/cartList";
public static final String DIRECTORY_SHOPPING_COUNT = "shopping/count";
public static final String DIRECTORY_HOME_INDEX = "home/index";
public static final String DIRECTORY_LOTTERY_INDEX = "activity/index";
public static final String DIRECTORY_HOME_ACTIVITY_TYPE = "home/activityTypePhoto";
public static final String DIRECTORY_PRODUCT_DETAILS = "view";
public static final String DIRECTORY_ORDER_LIST = "order/listv2";
public static final String DIRECTORY_ORDER_EDIT = "order/updateHandler";
public static final String DIRECTORY_COMBO_LIST = "shopping/styleList";
public static final String DIRECTORY_ORDER_VIEW = "order/viewv2";
public static final String DIRECTORY_CHECKOUT = "order/checkout";
public static final String DIRECTORY_ORDER_CANCEL = "order/cancel";
public static final String DIRECTORY_CHECKOUT_SUBMIT = "order/getpayment";
public static final String DIRECTORY_ORDER_SUBMIT = "order/submit";
public static final String DIRECTORY_DELETE_CART = "shopping/delCart";
public static final String DIRECTORY_EDIT_CONSUMPTION = "shopping/editConsumption";
public static final String DIRECTORY_ADD_SHOPPING = "shopping/addCart";
public static final String DIRECTORY_MUTI_ADD_SHOPPING = "shopping/multiAddCart";
public static final String DIRECTORY_FCODE_CHECK = "mione/CheckFcode";
public static final String DIRECTORY_ACTIVITY = "activity/control";
public static final String DIRECTORY_CHECKCODE = "checkcode.php";
public static final String DIRECTORY_XIAOMI_VIEW = "xiaomi/view";
public static final String DIRECTORY_ADAPT_PHONE_LIST = "phoneAdapt";
public static final String DIRECTORY_DEFENSE_HACKER_CHECKCODE = "checkcode/get";
public static final String DIRECTORY_SERVICE_TOKENS = "eshop/list";
public static final String DIRECTORY_SEND_MESSAGE = "pvcode/index";
public static final String DIRECTORY_CHECK_MESSAGE_CODE = "pvcode/check";
public static final String DIRECTORY_USER_REMIND = "user/remain";
public static final String DIRECTORY_MIHOME_CANCELRESERVE = "mihome/cancelReserve";
public static final String DIRECTORY_MIHOME_SIGNIN = "mihome/signin";
public static final String DIRECTORY_MIHOME_SIGNIN_INFO = "mihome/signinfo";
public static final String DIRECTORY_SHOW_CHAT = "helper/scale";
public static final String DIRECTORY_SEARCHPRODUCT = "xmSearch";
public static final String DIRECTORY_USER_SALE_OUT_REG = "user/saleoutReg";
public static final String DIRECTORY_COMMENT_LIST = "comment/getList";
public static final String DIRECTORY_COMMENT_DETAIL = "comment/getDetail";
public static final String DIRECTORY_COMMENT_TOTAL = "comment/getTotal";
public static final String DIRECTORY_COMMENT_GOODS_LIST = "comment/getGoodsList";
public static final String DIRECTORY_COMMENT_ADD = "comment/add";
public static final String DIRECTORY_ORDER_EXPRESS = "order/express";
public static final String DIRECTORY_MIHOME_STORAGE = "xms/getstorage";
public static final String DIRECTORY_USER_FAVORITELIST = "user/favoriteList";
public static final String DIRECTORY_USER_FAVORITEADD = "user/favoriteAdd";
public static final String DIRECTORY_USER_FAVORITEDROP = "user/favoriteDrop";
public static final String DIRECTORY_PRODUCT_HOTSEARCH = "product/hotSearch";
public static final String DIRECTORY_PRODUCT_EXPANDSEARCH = "product/expandSearch";
public static final String DIRECTORY_SPLASH = "home/welcome";
public static final String DIRECTORY_ORDER_REGION_PAYMENT = "order/getRegionPayment";
public static final String DIRECTORY_PAYMENT_MODE = "banklist";
public static final String DIRECTORY_RECOMMEND_PRODUCT = "relatedGoods";
/** 支付业务子路径 **/
public static final String DIRECTORY_ALIPAY = "alipay";
public static final String DIRECTORY_SECURITY_PAY = "securitypay";
public static final String URL_PAY_RESULT_PATH = "/api/bill/informchargeresult.do";
public static final String DIRECTORY_UPPAY = "upmp_securitypay";
/**
* 获取更新日志的地址
*/
public static String getUpdateLogURL(String version) {
return String.format("%s%s?v=%s&%s=%s&%s=%s",
URL_XIAOMI_SHOPAPI_ROOT, DIRECTORY_UPDATE_INFO,
version,
Parameters.Keys.CLIENT_ID, Parameters.Values.CLIENT_ID,
Parameters.Keys.DEVICE_DENSITY, String.valueOf(Device.DISPLAY_DENSITY));
}
/**
* 获取更新版本URL
*/
public static String getUpdateURL() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_CHECK_UPDATE;
}
/**
* 获取订单列表
*/
public static String getOrderList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_LIST;
}
/**
* 获取订单详情
*/
public static String getOrderView() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_VIEW;
}
/**
* 取消订单
*/
public static String getCancelOrder() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_CANCEL;
}
/**
* 获取分类列表URL
*
* @return 下载分类列表的url
*/
public static String getCategory() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_CATEGORY;
}
public static String getCategoryTree() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_CATEGORY_TREE;
}
/**
* 获取分类下列表各商品URL
*
* @return 下载分类列表下各商品的url
*/
public static String getProduct() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_PRODUCT;
}
public static String getPaymentMode() {
return URL_XIAOMI_SHOPAPI_PAY + DIRECTORY_PAYMENT_MODE;
}
/**
* 获取alipay的路径
*/
public static String getAlipay() {
return URL_XIAOMI_SHOPAPI_PAY + DIRECTORY_ALIPAY;
}
/**
* 安全支付路径
*/
public static String getSecurityPay() {
return URL_XIAOMI_SHOPAPI_PAY + DIRECTORY_SECURITY_PAY;
}
/**
* 银联支付
*/
public static String getUPPaySecurityPay() {
return URL_XIAOMI_SHOPAPI_PAY + DIRECTORY_UPPAY;
}
/**
* 通过SHOPAPI查询商品信息
*/
public static String getProductDetailsByShopApi(){
return URL_SHOPAPI_PRODUCT;
}
public static String getProductId(){
return URL_SHOPAPI_TRANSFORM;
}
/**
* 获取商品详情的url
*
* @return 商品详情的url
*/
public static String getProductDetails() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_PRODUCT_DETAILS;
}
public static String getRecommendProduct() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_RECOMMEND_PRODUCT;
}
/**
* 获取购物车列表
*
* @return 购物车的url
*/
public static String getShoppingCartList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SHOPPING_CARTLIST;
}
public static String getCheckout() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_CHECKOUT;
}
public static String getCheckoutSubmit() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_CHECKOUT_SUBMIT;
}
public static String getOrderSubmit() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_SUBMIT;
}
/**
* 获取购物车中商品数量
*
* @return
*/
public static String getShoppingCount() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SHOPPING_COUNT;
}
/**
* 获取用户个人信息
*/
public static String getUserInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USERINFO;
}
/**
* 获取首页数据
*/
public static String getHome() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_HOME_INDEX;
}
/**
* 获取活动页数据
*/
public static String getLottery() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_LOTTERY_INDEX;
}
/**
* 获取首页活动分类的小图
*/
public static String getHomeActivityTypePhoto() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_HOME_ACTIVITY_TYPE;
}
/**
* 获取套餐列表
*/
public static String getComboList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMBO_LIST;
}
/**
* 加入购物车列表
*/
public static String getAddShopping() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ADD_SHOPPING;
}
/**
* 加入多项购物车列表
*/
public static String getMutiAddShopping() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_MUTI_ADD_SHOPPING;
}
/**
* 存储打印信息
* @return
*/
public static String savePrinter(){
return "http://m.xms.be9.xiaomi.com/api/saveSalesPrintQueue";
}
/*
* 获取个人地址列表
*/
public static String getAddressInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ADDRESSINFO_LIST;
}
public static String getDelAddressInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ADDRESSINFO_DEL;
}
public static String getDeleteCart() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_DELETE_CART;
}
public static String getEditConsumption() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_EDIT_CONSUMPTION;
}
public static String getCheckFcode() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_FCODE_CHECK;
}
public static String getActivity() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ACTIVITY;
}
public static String getCheckVCode() {
return URL_XIAOMI_M + DIRECTORY_CHECKCODE;
}
public static String getMiPhoneDetail() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_XIAOMI_VIEW;
}
public static String getEditAddressInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ADDRESSINFO_EDIT;
}
public static String getAddAddressInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ADDRESSINFO_ADD;
}
public static String getAdaptPhoneInfo() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_ADAPT_PHONE_LIST;
}
public static String getDefenseCheckCode() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_DEFENSE_HACKER_CHECKCODE;
}
public static String getServiceTokens() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SERVICE_TOKENS;
}
public static String getRemindCount() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USER_REMIND;
}
public static String getEditOrder() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_EDIT;
}
public static String getSendMessage() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SEND_MESSAGE;
}
public static String getCheckMessageCode() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_CHECK_MESSAGE_CODE;
}
public static String getCancelReserve() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_MIHOME_CANCELRESERVE;
}
public static String getMihomeSignin() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_MIHOME_SIGNIN;
}
public static String getMihomeSignInfo() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_MIHOME_SIGNIN_INFO;
}
public static String getShowChatList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SHOW_CHAT;
}
public static String getSearchProduct() {
return URL_XIAOMI_SHOPAPI_PRODUCT + DIRECTORY_SEARCHPRODUCT;
}
public static String getSaleOutReg() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USER_SALE_OUT_REG;
}
/**
* Comment
*/
public static String getCommentList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMMENT_LIST;
}
public static String getCommentDetail() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMMENT_DETAIL;
}
public static String getCommentTotal() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMMENT_TOTAL;
}
public static String getCommentGoodsList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMMENT_GOODS_LIST;
}
public static String getCommentAdd() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_COMMENT_ADD;
}
public static String getOrderExpress() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_EXPRESS;
}
public static String getMihomeStorage() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_MIHOME_STORAGE;
}
public static String getFavoriteList() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USER_FAVORITELIST;
}
public static String getFavoriteAdd() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USER_FAVORITEADD;
}
public static String getFavoriteDrop() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_USER_FAVORITEDROP;
}
public static String getHotSearch() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_PRODUCT_HOTSEARCH;
}
public static String getExpandSearch() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_PRODUCT_EXPANDSEARCH;
}
public static String getSplash() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_SPLASH;
}
public static String getRegionPayment() {
return URL_XIAOMI_SHOPAPI_ROOT + DIRECTORY_ORDER_REGION_PAYMENT;
}
/**
* set cookie by default domain is .xiaomi.com
*/
private static void setCookie(Context context, String name, String value) {
setCookie(context, name, value, DOMAIN_BASE);
}
/**
* set cookie for webView.
*
* @see http://zlping.iteye.com/blog/1633213 webview管理cookies在各版本中的区别
*/
public static void setCookie(Context context, String name, String value, String domain) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
if (cookieManager == null) {
return;
}
String cookieString = name + "=" + value + "; domain=" + domain;
cookieManager.setCookie(domain, cookieString);
LogUtil.d(TAG, "set Cookie: " + domain);
CookieSyncManager.getInstance().sync();
}
private static void removeCookie(Context context, String name, String domain) {
LogUtil.d(TAG, "remove Cookie: " + domain + ": " + name);
CookieManager cookieManager = CookieManager.getInstance();
CookieSyncManager.createInstance(context);
String cookies = cookieManager.getCookie(domain);
if (cookies == null) {
return;
}
for (String cookie : cookies.split(";")) {
String[] cookieValues = cookie.split("=");
if (cookieValues.length < 2) {
return;
}
if (TextUtils.equals(cookieValues[0].trim(), name)) {
StringBuilder cookieString = new StringBuilder();
cookieString.append(name);
cookieString.append("=;domain=");
cookieString.append(domain);
cookieString.append(";expires=-1");
cookieManager.setCookie(domain, cookieString.toString());
// cookieManager.removeExpiredCookie();
CookieSyncManager.getInstance().sync();
}
}
}
public static void setLoginCookies(Context context) {
// Remove all login cookies before setting.
LoginManager loginManager = LoginManager.getInstance();
if (loginManager.hasLogin()) {
// 无论如何,都会将UserId种上
HostManager.setCookie(context, HostManager.Parameters.Keys.USER_ID,
loginManager.getUserId());
// 对于默认的SID,app有有效的过期重新获取机制
String seviceToken = loginManager
.getExtendedAuthToken(Constants.Account.DEFAULT_SERVICE_ID) == null ? null
: loginManager.getExtendedAuthToken(Constants.Account.DEFAULT_SERVICE_ID).authToken;
if (!TextUtils.isEmpty(seviceToken)) {
HostManager.setCookie(context, HostManager.Parameters.Keys.SERVICE_TOKEN,
URLEncoder.encode(seviceToken), DOMAIN_APP_SHOPAPI);
}
String passToken = loginManager.getPassToken();
if (!TextUtils.isEmpty(passToken)) {// 如果passToken不为空,那么只需要种passToken
HostManager.setCookie(context, HostManager.Parameters.Keys.PASS_TOKEN,
passToken, DOMAIN_ACCOUNT);
} else { // 如果没有passToken,那么需要将所有的serviceToken种上
setWebRequiredServiceTokens(context);
}
}
}
private static void setWebRequiredServiceTokens(Context context) {
LoginManager loginManager = LoginManager.getInstance();
// 首先读取Cache中缓存的ServiceToken,以便立即更新到WebView上,防止出现本地登录而Web上没有登录的情况
Map<String, ExtendedAuthToken> serviceTokens = loginManager
.getWebRequiredCachedServiceTokens();
setServiceTokenCookies(context, serviceTokens);
// 为了适应业务的变化,读取服务端配置的最新ServiceToken信息,更新缓存。这种变化不是经常发生,即使上一步
// 出现错误,当用户下次打开应用的时候就恢复正常了
serviceTokens = loginManager.getWebRequiredServiceTokens();
setServiceTokenCookies(context, serviceTokens);
}
private static void setServiceTokenCookies(Context context,
Map<String, ExtendedAuthToken> serviceTokens) {
if (serviceTokens != null) {
Iterator<Entry<String, ExtendedAuthToken>> iterator = serviceTokens.entrySet()
.iterator();
while (iterator.hasNext()) {
Entry<String, ExtendedAuthToken> entry = iterator.next();
setCookie(context, HostManager.Parameters.Keys.SERVICE_TOKEN,
URLEncoder.encode(entry.getValue().authToken), entry.getKey());
}
}
}
public static void removeLoginCookies(Context context) {
/**
* @HACKME
* removeCookie方法无法移除“account.xiaomi.com”(不是“.account.xiaomi.com”
* )下的passToken值。 这个值是https://account.xiaomi.com/pass/
* serviceLogin自己种进去的。因此,采用全清-重新种cookie的方法。
*/
LogUtil.d(TAG, "remove login cookie");
CookieManager.getInstance().removeSessionCookie();
HostManager.removeCookie(context, HostManager.Parameters.Keys.SERVICE_TOKEN,
DOMAIN_T_HD);
CookieSyncManager.getInstance().sync();
initSettingCookies(context);
}
public static void initSettingCookies(Context context) {
HostManager.setCookie(context,
HostManager.Parameters.Keys.COOKIE_NAME_PLATFORM,
HostManager.Parameters.Values.COOKIE_VALUE_PLATFROM);
}
}