use crate::config::{API_DEFAULT_HOST_URL, WxOpenConfigStorage};
fn url(config: &dyn WxOpenConfigStorage, path: &str) -> String {
let host = config
.wx_open_host_config()
.map(|h| h.api_host)
.unwrap_or_else(|| API_DEFAULT_HOST_URL.to_string());
format!("{host}{path}")
}
pub fn ma_auth_submit_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/wxaauth")
}
pub fn ma_auth_query_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/queryauth")
}
pub fn ma_auth_upload_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/uploadauthmaterial")
}
pub fn ma_auth_resubmit_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/reauth")
}
pub fn ma_auth_identity_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/authidentitytree")
}
pub fn ma_get_account_basic_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/account/getaccountbasicinfo")
}
pub fn ma_set_nickname_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/setnickname")
}
pub fn ma_query_nickname_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/api_wxa_querynickname")
}
pub fn ma_check_wx_verify_nickname_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxverify/checkwxverifynickname")
}
pub fn ma_modify_head_image_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/account/modifyheadimage")
}
pub fn ma_modify_signature_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/account/modifysignature")
}
pub fn ma_component_rebind_admin_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/account/componentrebindadmin")
}
pub fn component_rebind_admin_url(
app_id: &str,
component_app_id: &str,
encoded_redirect_uri: &str,
) -> String {
format!(
"https://mp.weixin.qq.com/wxopen/componentrebindadmin?appid={}&component_appid={}&redirect_uri={}",
app_id, component_app_id, encoded_redirect_uri
)
}
pub fn ma_get_all_categories_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/getallcategories")
}
pub fn ma_get_all_categories_by_type_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/getcategoriesbytype")
}
pub fn ma_add_category_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/addcategory")
}
pub fn ma_delete_category_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/deletecategory")
}
pub fn ma_get_category_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/getcategory")
}
pub fn ma_modify_category_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/modifycategory")
}
pub fn ma_get_all_category_name_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/wxopen/getallcategorynamelist")
}
pub fn ma_get_order_path_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/security/getorderpathinfo")
}
pub fn ma_embedded_add_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/add_embedded")
}
pub fn ma_embedded_del_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/del_embedded")
}
pub fn ma_embedded_get_list_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/get_list")
}
pub fn ma_embedded_del_authorize_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/del_authorize")
}
pub fn ma_embedded_get_own_list_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/get_own_list")
}
pub fn ma_embedded_set_authorize_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxaapi/wxaembedded/set_authorize")
}
pub fn ma_icp_query_verify_task_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_verifytask")
}
pub fn ma_icp_create_verify_task_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/create_icp_verifytask")
}
pub fn ma_icp_upload_media_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/upload_icp_media")
}
pub fn ma_icp_cancel_apply_filing_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/cancel_apply_icp_filing")
}
pub fn ma_icp_apply_filing_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/apply_icp_filing")
}
pub fn ma_icp_cancel_filing_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/cancel_icp_filing")
}
pub fn ma_icp_get_entrance_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/get_icp_entrance_info")
}
pub fn ma_icp_get_online_order_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/get_online_icp_order")
}
pub fn ma_icp_query_service_content_types_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_service_content_types")
}
pub fn ma_icp_query_certificate_types_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_certificate_types")
}
pub fn ma_icp_query_district_code_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_district_code")
}
pub fn ma_icp_query_nrlx_types_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_nrlx_types")
}
pub fn ma_icp_query_subject_types_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/query_icp_subject_types")
}
pub fn ma_icp_get_media_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/icp/get_icp_media")
}
pub fn ma_icp_submit_auth_and_icp_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/submit_auth_and_icp")
}
pub fn ma_icp_query_auth_and_icp_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/query_auth_and_icp")
}
pub fn ma_privacy_set_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/component/setprivacysetting")
}
pub fn ma_privacy_get_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/component/getprivacysetting")
}
pub fn ma_privacy_upload_file_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/cgi-bin/component/uploadprivacyextfile")
}
pub fn ma_privacy_get_interface_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/security/get_privacy_interface")
}
pub fn ma_privacy_apply_interface_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/security/apply_privacy_interface")
}
pub fn ma_orders_upload_shopping_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/orders")
}
pub fn ma_orders_upload_shipping_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/orders/shippings")
}
pub fn ma_orders_upload_combined_shopping_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/combine-orders")
}
pub fn ma_orders_upload_combined_shipping_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/combine-orders/shippings")
}
pub fn ma_orders_open_permission_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/orders-permission/open")
}
pub fn ma_orders_confirm_permission_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/orders-permission/confirm")
}
pub fn ma_orders_verify_upload_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/user-order/shoppinginfo/verify")
}
pub fn minishop_goods_cat_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/category/get")
}
pub fn minishop_goods_add_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/add")
}
pub fn minishop_goods_del_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/del")
}
pub fn minishop_goods_get_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/get")
}
pub fn minishop_goods_get_list_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/get_list")
}
pub fn minishop_goods_search_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/search")
}
pub fn minishop_goods_update_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/update")
}
pub fn minishop_goods_listing_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/listing")
}
pub fn minishop_goods_delisting_spu_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/spu/delisting")
}
pub fn minishop_goods_add_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/add")
}
pub fn minishop_goods_batch_add_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/batch_add")
}
pub fn minishop_goods_del_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/del")
}
pub fn minishop_goods_get_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/get")
}
pub fn minishop_goods_get_list_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/get_list")
}
pub fn minishop_goods_update_sku_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/update")
}
pub fn minishop_goods_update_sku_price_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/sku/update_price")
}
pub fn minishop_goods_update_stock_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/stock/update")
}
pub fn minishop_goods_get_stock_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/stock/get")
}
pub fn minishop_submit_merchant_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/register/submit_merchantinfo")
}
pub fn minishop_submit_basic_info_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/register/submit_basicinfo")
}
pub fn minishop_upload_img_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/img/upload")
}
pub fn minishop_get_category_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/category/get")
}
pub fn minishop_get_brands_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/brand/get")
}
pub fn minishop_get_delivery_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/delivery/get_freight_template")
}
pub fn minishop_get_shop_cat_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/product/store/get_shopcat")
}
pub fn ma_auth_and_icp_query_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/query_auth_and_icp")
}
pub fn ma_auth_and_icp_submit_url(config: &dyn WxOpenConfigStorage) -> String {
url(config, "/wxa/sec/submit_auth_and_icp")
}
pub fn oauth2_access_token_url(
config: &dyn WxOpenConfigStorage,
app_id: &str,
app_secret: &str,
code: &str,
) -> String {
format!(
"{}/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code",
host(config),
app_id,
app_secret,
code,
)
}
pub fn oauth2_refresh_token_url(
config: &dyn WxOpenConfigStorage,
app_id: &str,
refresh_token: &str,
) -> String {
format!(
"{}/sns/oauth2/refresh_token?appid={}&grant_type=refresh_token&refresh_token={}",
host(config),
app_id,
refresh_token,
)
}
pub fn oauth2_userinfo_url(
config: &dyn WxOpenConfigStorage,
access_token: &str,
open_id: &str,
lang: &str,
) -> String {
format!(
"{}/sns/userinfo?access_token={}&openid={}&lang={}",
host(config),
access_token,
open_id,
lang,
)
}
pub fn oauth2_validate_token_url(
config: &dyn WxOpenConfigStorage,
access_token: &str,
open_id: &str,
) -> String {
format!(
"{}/sns/auth?access_token={}&openid={}",
host(config),
access_token,
open_id,
)
}
pub fn qrconnect_url(app_id: &str, encoded_redirect_uri: &str, scope: &str, state: &str) -> String {
format!(
"https://open.weixin.qq.com/connect/qrconnect?appid={}&redirect_uri={}&response_type=code&scope={}&state={}#wechat_redirect",
app_id, encoded_redirect_uri, scope, state
)
}
pub fn oauth2_component_access_token_url(
config: &dyn WxOpenConfigStorage,
app_id: &str,
code: &str,
) -> String {
format!(
"{}/sns/oauth2/component/access_token?appid={}&code={}&grant_type=authorization_code&component_appid={}",
host(config),
app_id,
code,
component_app_id(config),
)
}
pub fn connect_oauth2_authorize_url(
app_id: &str,
encoded_redirect_uri: &str,
scope: &str,
state: &str,
component_app_id: &str,
) -> String {
format!(
"https://open.weixin.qq.com/connect/oauth2/authorize?appid={}&redirect_uri={}&response_type=code&scope={}&state={}&component_appid={}#wechat_redirect",
app_id, encoded_redirect_uri, scope, state, component_app_id
)
}
fn host(config: &dyn WxOpenConfigStorage) -> String {
config
.wx_open_host_config()
.map(|h| h.api_host)
.unwrap_or_else(|| API_DEFAULT_HOST_URL.to_string())
}
fn component_app_id(config: &dyn WxOpenConfigStorage) -> String {
config.component_app_id().unwrap_or_default()
}