特稿:拼多多撼动阿里京东电商地位

作者: 联合早报   日期:2023-12-18 17:44 阅读:0  来源:联合早报  
分享到:
邮箱:

据联合早报报道

刚刚过去的“双十二”网购节,上海白领刘静怡(29岁)最大一笔花销,是在购物网站“拼多多”上买了一台iPad平板电脑。

刘静怡告诉《联合早报》,这台iPad在拼多多售价比官网便宜近800元(人民币,下同,150新元),也比淘宝和京东便宜三四百元不等。虽然拼多多上没有她最想要的颜色,也无法提供官网的免费镌刻服务,但她认为这些都是次要,“便宜才是王道”。

像刘静怡这样的消费者日益增多,带动拼多多快速崛起,撼动阿里巴巴和京东这两大老牌电商的主导地位。

拼多多11月28日发布的财报显示,集团第三季营收达到688.4亿元。虽然这只是阿里同期营收的三分之一,但和阿里同比仅小幅增长9%相比,拼多多的增幅却创下93.9%的历史新高

两天后,拼多多市值首次超过阿里,跃居在美中概股榜首。截至星期五(12月15日)美股收盘,拼多多市值达到1971亿美元(2629亿新元),远高于阿里的1895亿美元和京东的420亿美元。今年来拼多多股价累计上涨超过75%,同期阿里股价下滑19%,京东股价更大跌52.5%。

2015年成立的拼多多,和1990年代创立的阿里和京东相比,只是“小老弟”。创办初期,拼多多的标签是“便宜”和“山寨”。商品价格低廉是它的最大卖点,但产品质量良莠不齐也令它饱受诟病。

拼多多早期主要服务三四线城市及广大农村。天风证券分析师孔蓉和孙海洋在研报中指出,农村互联网普及率提升、乡村人口可支配收入增加等因素,帮助拼多多在短时间内积累大量下沉市场用户。此后,拼多多又通过提供“百亿补贴”方式吸引头部品牌入驻,扭转平台声誉。

不过,让拼多多真正突出重围的,还是冠病疫情暴发后消费趋势的逆转。新加坡管理大学计算与信息系统学院副教授朱飞达受访时分析,消费降级的大潮助推了主打性价比的拼多多;而押注消费升级的淘宝和京东,则还没跟上市场转身的步伐。

中国国家统计局上周五发布的数据显示,即便有“双十一”网购节加持,11月社会消费品零售总额增幅仍低于市场预期的12.9%,仅为10.1%。而根据11月官方制造业采购经理指数(PMI)调查,超过六成受访企业反映市场需求不足。

今年各电商平台都没有披露双十一交易总额,中信证券结合各公司销售数据通稿及国家邮政局快递数据分析,天猫和京东双十一交易额同比取得中低个位数增长,拼多多增长则超过20%。高盛研究报告则预测,阿里、京东和拼多多的双十一商品交易总额(GMV)增速分别为1%、3%和20%。

势如破竹的国际扩张,是带动拼多多市值飙升的另一大引擎。拼多多海外平台Temu去年9月推出以来迅速扩张,一年来业务已涵盖48个国家和地区。移动应用追踪机构Sensor Tower数据显示,Temu目前在美国已有逾5200万月活跃用户。

拼多多在海外的成功与中国有异曲同工之处,即在全球增长放缓、通胀高企的环境下,向价格敏感的消费者发起低价攻势。天风证券认为,在国内活跃用户接近饱和之际,海外市场将成为拼多多未来主要用户增长源。乐观情况下,海外活跃用户数将从今年的1.31亿增至明年的1.57亿。

在日渐饱和的中国市场,抖音、快手和小红书等后起之秀也日渐崭露头角,令市场面临新一轮洗牌。星图数据对双十一销售的统计显示,双十一期间,以天猫和京东为代表的综合电商销售额同比下降1%至9235亿元,而以抖音和快手为代表的直播电商,同比增长19%至2151亿元。

阿里和京东面对的另一重压力,则是过去两年多来的反垄断整改。两家公司今年初相继宣布业务分拆计划,以满足监管要求。受冲击更大的阿里,前前后后被罚款逾250亿元,持股的蚂蚁集团也被迫搁置价值370亿美元的上市计划至今。

拼多多市值超越阿里之际,阿里创始人马云在集团内网发声说,AI电商时代刚刚开始,对谁都是机会,也是挑战。“我更坚信阿里会变,阿里会改。”京东创始人刘强东也在内网自责“管理不善”,并称京东“必须改变,否则我们没有出路”。

过去一年,阿里旗下跨境电商平台速卖通(AliExpress)效仿Temu,推出面向供货商的全托管模式;京东则重打低价牌,开启“百亿补贴”,并在今年双十一喊出“全网最低价”口号。

上海财经大学电子商务研究所执行所长崔丽丽接受时代财经访问时指出,京东的物流配送和为高价值产品背书是长期以来的优势,低价策略风险在于百亿补贴对于拉新和促进销售的助力是否可持续。

朱飞达认为,面对更激烈的竞争,阿里和京东很难再靠低价取胜。“他们应该设法发挥作为行业龙头建立起来的优势,例如阿里在人工智能(AI)领域的领先布局,以及京东成熟的自营物流链。”

FreeMarker template error (DEBUG mode; use RETHROW in production!): The following has evaluated to null or missing: ==> info.copyRight [in template "1/default/newsDetail.html" at line 717, column 30] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use [#if myOptionalVar??]when-present[#else]when-missing[/#if]. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${info.copyRight.content!""} [in template "1/default/newsDetail.html" at line 717, column 28] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:85) at freemarker.core.UnexpectedTypeException.(UnexpectedTypeException.java:48) at freemarker.core.NonHashException.(NonHashException.java:49) at freemarker.core.Dot._eval(Dot.java:48) at freemarker.core.Expression.eval(Expression.java:83) at freemarker.core.DefaultToExpression._eval(DefaultToExpression.java:88) at freemarker.core.Expression.eval(Expression.java:83) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:330) at freemarker.core.Environment.visit(Environment.java:336) at freemarker.core.Environment.visit(Environment.java:336) at freemarker.core.Environment.process(Environment.java:309) at freemarker.template.Template.process(Template.java:384) at com.jspxcms.common.file.FtpFileHandler$11.doInFtp(FtpFileHandler.java:270) at com.jspxcms.common.file.FtpTemplate.execute(FtpTemplate.java:58) at com.jspxcms.common.file.FtpFileHandler.storeFile(FtpFileHandler.java:257) at com.jspxcms.core.html.PInfo.doMakeHtml(PInfo.java:105) at com.jspxcms.core.html.PInfo.makeHtml(PInfo.java:48) at com.jspxcms.core.html.HtmlServiceImpl.makeInfo(HtmlServiceImpl.java:56) at com.jspxcms.core.html.HtmlServiceImpl$$FastClassBySpringCGLIB$$ca793f53.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:283) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.jspxcms.core.html.HtmlServiceImpl$$EnhancerBySpringCGLIB$$3864106.makeInfo() at com.jspxcms.core.service.impl.InfoServiceImpl.updateHtml(InfoServiceImpl.java:879) at com.jspxcms.core.service.impl.InfoServiceImpl.updateHtml(InfoServiceImpl.java:843) at com.jspxcms.core.service.impl.InfoServiceImpl.update(InfoServiceImpl.java:382) at com.jspxcms.core.service.impl.InfoServiceImpl$$FastClassBySpringCGLIB$$3b2ee07e.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:283) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.jspxcms.core.service.impl.InfoServiceImpl$$EnhancerBySpringCGLIB$$ad3b767.update() at com.jspxcms.core.web.back.InfoController.update(InfoController.java:552) at com.jspxcms.core.web.back.InfoController$$FastClassBySpringCGLIB$$6206d7eb.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82) at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:39) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.jspxcms.core.web.back.InfoController$$EnhancerBySpringCGLIB$$3ede9ec1.update() at sun.reflect.GeneratedMethodAccessor1237.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:112) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at com.jspxcms.core.support.BackSiteFilter.doFilter(BackSiteFilter.java:50) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.jspxcms.core.support.CsrfFilter.doFilterInternal(CsrfFilter.java:47) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:128) at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:103) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:121) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750)