CN113312055A - 一种小程序投放方法、装置以及设备 - Google Patents

一种小程序投放方法、装置以及设备 Download PDF

Info

Publication number
CN113312055A
CN113312055A CN202110593120.7A CN202110593120A CN113312055A CN 113312055 A CN113312055 A CN 113312055A CN 202110593120 A CN202110593120 A CN 202110593120A CN 113312055 A CN113312055 A CN 113312055A
Authority
CN
China
Prior art keywords
capability
applet
target
scanning
delivery
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110593120.7A
Other languages
English (en)
Other versions
CN113312055B (zh
Inventor
党家豪
王少龙
边炀凯
蔡宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AlipayCom Co ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110593120.7A priority Critical patent/CN113312055B/zh
Publication of CN113312055A publication Critical patent/CN113312055A/zh
Application granted granted Critical
Publication of CN113312055B publication Critical patent/CN113312055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Abstract

本说明书实施例公开了一种小程序投放方法、装置以及设备。方案包括:获取待投放的小程序的源码;按照预定的能力扫描维度,对源码进行扫描,确定小程序的能力;将小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;若是,则对小程序和/或投放目标端进行相应改造后,再将小程序投放至投放目标端。

Description

一种小程序投放方法、装置以及设备
技术领域
本说明书涉及互联网技术领域,尤其涉及一种小程序投放方法、装置以及设备。
背景技术
随着计算机和互联网技术的发展,越来越多的小程序走入了用户的视野中。小程序是一种在传统的客户端所提供的运行环境下,不需要安装即可使用的程序。其不需要安装,而是在客户端中通过扫描二维码、搜索等方式打开后直接执行,在用完以后也不需要卸载,达到了用完即走的效果。
当开发人员开发了一款小程序后,可能会将其投放至多个客户端。由于不同客户端所提供运行环境不同,为该客户端开发的小程序,有可能在其他客户端内运行时产生异常,此时需要小程序的开发人员和其他客户端的开发人员进行沟通,来解决所产生的异常。
基于此,需要提供一种更可靠的小程序投放方案。
发明内容
本说明书一个或多个实施例提供一种小程序投放方法、装置、设备以及存储介质,用以解决如下技术问题:需要提供一种更可靠的小程序投放方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种小程序投放方法,包括:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
本说明书一个或多个实施例提供的一种小程序投放装置,包括:
源码获取模块,获取待投放的小程序的源码;
源码扫描模块,按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
能力对比模块,将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
改造投放模块,若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
本说明书一个或多个实施例提供的一种小程序投放设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过扫描小程序的源码确定小程序的能力,将小程序的能力与投放目标端的能力进行对比,如果存在能力适配问题,则可以在投放之前对小程序或投放目标端进行改造,解决了小程序投放后由于能力不适配产生异常情况的问题,能够使小程序投放后的使用过程更加稳定可靠。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种小程序投放方法的流程示意图;
图2为本说明书一个或多个实施例提供的,一种应用场景下的能力查询、录入、对比以及对齐建设的流程示意图;
图3为本说明书一个或多个实施例提供的,一种应用场景下的能力对比系统的整体框架的示意图;
图4为本说明书一个或多个实施例提供的一种小程序投放装置的结构示意图;
图5为本说明书一个或多个实施例提供的一种小程序投放设备的结构示意图。
具体实施方式
本说明书实施例提供一种小程序投放方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本说明书一个或多个实施例提供的一种小程序投放方法的流程示意图。该方法可以应用于不同的业务领域,比如,小程序开发投放领域、互联网金融业务领域、电商业务领域、即时通讯业务领域、游戏业务领域、公务业务领域等。该流程可以由相应领域的计算设备执行,流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图1中的流程可以包括以下步骤:
S102:获取待投放的小程序的源码。
源码也称源代码、源程序,是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。对于小程序来说,其源码主要是前端代码,比如通过JS、JSP、html5等语言编写的代码,其会配合后端代码工作,后端代码可以由小程序的投放端来提供。
S104:按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力。
能力扫描维度中通常包括有多个维度,比如,包括小程序所使用的JS语言下的应用程序编程接口(JS Application Programming Interface,JSAPI)列表、插件、远程过程调用(Remote Procedure Call,RPC)列表、组件列表、判断可用的JSAPI列表、不规范的JSAPI列表等。
在对源码扫描时,可以针对每个维度对源码进行扫描,确定小程序的能力。比如,针对小程序所使用的JSAPI列表扫描、插件、RPC列表、组件列表这些能力扫描维度,能够确定小程序的能力包括:所使用的JSAPI、所应用的插件、所使用的RPC、所使用的组件。而对于部分小程序,存在有并非在JSAPI列表中所包括的所有JSAPI都能被小程序使用的问题,此时可以通过相应的工具(比如,某款名为canIUse的工具),快速判断得到能力:在投放目标端可用的JSAPI。另外,小程序中还存在一些并非规范的JSAPI,其出于一些目的(比如,为了某个客户端或用户的需求或者为了提高安全性)而定制封装的JSAPI,不具备普遍性,此时可以得到能力:不规范的JSAPI。当然,还可以通过扫描确定出小程序的其他能力,比如支持的跳转应用等,在此不再赘述。
在对小程序的源码扫描时,可以对预定的能力扫描维度中的所有维度进行扫描,或者根据小程序本身、当前处理设备的处理能力、用户需求等,只对其中的部分维度进行扫描。
S106:将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题。
投放目标端指的是想要将小程序所投放的目标客户端,投放目标端的能力的获取,可以采用与小程序类似的方式,通过预先设置的多个能力扫描维度,对投放目标端的源码进行扫描得到。或者,通过与投放目标端的开发人员进行沟通后,由其开发人员进行提供。对于投放目标端的能力,相比于其能够实现的能力,通常更关注其还不能实现的能力以及可能会出现问题的地方。
在对比过程中,若小程序具有某个能力,而投放目标端不具备该能力,则认为存在能力适配问题。比如,在对小程序的源码的扫描过程中,确定了小程序所使用的插件包括“互动入口组件插件”,但是在某个投放目标端中却不支持该插件,此时认为两者之间存在能力适配问题。而反之,当投放目标端具有某个能力,但是小程序却不具备该能力时,小程序在该投放目标端中投放时,也有可能会存在异常,认为其存在能力适配问题,比如,当该能力在该投放目标端中是一个较为基础的能力,小程序如果不具备该能力,则无法在该投放目标端中正常运行,此时认为其存在能力适配问题。
S108:若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
对小程序改造可以是通过自动或手动的方式,将相应的代码补全。比如,当小程序中缺少某项在投放目标端运行时所必需的能力时,在小程序中将相应的代码补全,以使小程序具备该能力。对投放目标端的改造可以是通过对建站平台获取所缺能力的SDK,然后通过SDK进行端集成后,以端发布的方式录入能力。还可以是通过获取相应的账户权限、数据、授权、插件化等方式进行能力补全。
在本说明书一个或多个实施例中,通常情况下,小程序的开发人员为了公司的业务目标或者关注度,很可能会向多个投放目标端进行投放,由此需要进行多次能力对比。而各投放目标端在上线过程中也会进行版本的更新,每次版本更新通常也会带来投放目标端能力的更新,此时,也需要进行能力对比。当小程序的数量较多时,需要进行多次的能力对比。
基于此,在对源码扫描之前可以首先根据小程序的应用标识(appid)以及投放目标端创建能力对比任务(以下简称任务)。如果只通过人工对任务进行监控,会耗费较多的资源。因此,将各任务加入持续集成引擎(比如,Jenkins),持续集成引擎能够监控持续重复的工作(比如,持续的发布任务、监控外部调用执行的工作),通过持续集成引擎对加入其的各任务进行监控调度,并根据调度结果,通过预定的扫描引擎来执行任务。扫描引擎内部集成了JS、AXML、CSS、JSON等的语法树解析和遍历能力,主要用于对小程序中的各文件节点进行扫描,以确定小程序的能力。比如,通过小程序根目录下的全局配置文件(app.json)为起点遍历小程序中的各文件节点。
具体地,不同的小程序、不同的投放目标端、同一投放目标端的不同版本,均可创建相对应的任务,每个任务具有相应的标识。当然,如果小程序已经与投放目标端执行过能力对比任务,则在投放目标端更新时,可以仅对投放目标端所更新的部分代码所对应的能力创建能力对比任务。另外,可以通过相应的规则对任务进行调度,比如,优先执行更早加入持续集成引擎的任务,或者,优先处理重要程度较高的任务,重要程度可以通过小程序的类型、小程序的开发者、投放目标端等确定。
在本说明书一个或多个实施例中,在不同的实际需求下,对小程序扫描时所设定能力扫描维度可能也会不同,从而在扫描过程中所需要执行的动作也不同。因此,在对小程序的源码进行扫描之前,先根据预定的能力扫描维度,确定本次扫描所对应的语法树节点类型。节点类型包括多种,比如,page节点、component节点等,每次扫描过程可以扫描一种或多种节点类型。然后根据节点类型确定预先注册的回调函数(callbacks)。扫描引擎主要关注扫描用于遍历扫描,在解析得到源码对应的语法树,对语法树中的各节点进行扫描过程中,若扫描到本次扫描对应的节点类型时,则会向注册的回调函数进行转发,由回调函数完成对扫描结果的分析,并综合不同的节点信息,来分析得到小程序的能力。
以page节点为例,假定需要将某小程序投递到某电子地图应用,需要扫描对比确定不支持的JSAPI能力。则可以在扫描引擎中注册策略“投放端不可用JSAPI列表”,其对应的能力扫描维度包括JSAPI,则所需关注的节点类型至少包括page节点,据此注册对应的回调函数(比如,命名为jsapi-deliver-compatibility-checker),在扫描时根据小程序的目录结构,在page节点执行相应的语法树扫描动作,当扫描到my.xx格式的接口调用时,会把接口名称返回到该回调函数处理,当整个语法树扫描结束后,可以获取到该小程序依赖的所有的JSAPI列表,根据扫描出的JSAPI列表和该电子地图应用支持的JSAPI列表做数据对比,即可确定若将该小程序投放到该电子地图应用不支持的JSAPI能力。
在本说明书一个或多个实施例中,若小程序与投放目标端之间存在能力适配问题,则需要对小程序或投放目标端进行改造。通常情况下,对投放目标端的改造难度往往大于对小程序的改造难度,因此,开发人员有较大概率选择对小程序进行改造。而对小程序进行改造时,对于一些较为复杂的问题,其需要修改的代码量可能也会较多,甚至还会在修改过程中引起新的问题,耗时耗力。基于此,提供了一种高效快捷且实用的小程序改造方法。
具体地,首先确定存在能力适配问题的第一投放目标端,以及不存在能力适配问题的已适配端。已适配端可以表示,已经在投放目标端上投放,且不存在能力不匹配的端,或者,虽然还未进行投放,但是已经通过能力扫描确定不存在能力匹配的端。然后根据已适配端生成能力借调代码集成至小程序中,以此完成对小程序的改造,将该小程序投放至第一投放目标端。针对不同的能力,可以生成相应的能力借调代码,而针对同一种能力,在向不同的已适配端借调时,也可以对能力借调代码进行调整。
基于此,在将小程序投放至第一投放目标端后,如果用户在终端设备上的第一投放目标端内启动了小程序,并在使用过程中需要使用能力适配问题所对应的能力,此时小程序无法单独实现该能力,通过能力借调代码唤起终端设备上的已适配端,然后将小程序当前的状态数据发送至已适配端,由已适配端根据该状态数据来执行该能力,并将处理结果返回至小程序,由小程序展示给用户,相比于修改小程序的代码来解决能力适配问题,更加省时省力。
例如,小程序与第一投放目标端A(以下简称端A)存在能力适配问题,且能够在一个或多个的已适配端B(以下简称端B)正常运行。在小程序中集成了能力借调代码后,将其投放至端A中。用户在使用小程序的过程中需要使用该能力来打开相应的页面,小程序通过终端的操作系统以及在能力借调代码中集成的所有的端B的标识,检测该终端上是否存在有端B。如果存在,则尝试唤醒存在的端B,并在尝试成功后,通过能力借调代码,将用户在小程序内的账户名称、已执行的动作、验证码等其他所必需的状态数据发送至端B,端B根据该数据状态在后台运行小程序并打开相应的页面后,将该页面的数据或者截图返回至端A的小程序中,由该小程序向用户展示该页面。如果不存在,则小程序可以通过RPC访问端B对应的服务器,由服务器将相应的页面数据或截图返回至小程序中。
当然,除了打开页面之外,如果用户具有其他的需求,也可以由端B返回相应的处理结果。对于一些比较简单的需求,比如获取验证码、上传数据等,由端B直接代为处理即可。但是对于一些比较复杂的需求,比如在新打开的页面中继续执行业务,如果只返回一个页面截图,则难以继续执行业务。此时可以将页面截图,以及在该页面截图内的所有选项,都返回至小程序中,重新生成一个较为简单的业务执行界面,以使用户继续执行业务,或者在端B将该状态数据保留,并提示用户前往端B继续执行业务。
进一步地,通过能力借调代码能够省时省力的完成小程序功能的借调,但是其仍然存在一个问题,就是在借调过程中,第一投放目标端需要将状态数据发送至已适配端,而已适配端需要使用自身服务端的资源处理能力为第一投放目标端进行资源处理。如果两者之间并不存在信任关系,则该处理方式难以实现。
基于此,首先确定第一投放目标端所属的指定生态域,然后在该指定生态域内进行筛选,确定不存在能力适配问题的一个或多个第二投放目标端作为已适配端。生态域表示各端所属的公司之间具有密切的关系。生态域可以指代同一个公司或部门等,此时在同一个生态域内的各端之间信任程度非常高。当然,如果实际需求为了扩大生态域的范围,提高寻找到已适配端的概率,生态域还可以指代属于同一个总公司或属于相同负责人所领导的各公司,或者,被同一个公司所收购的各公司,或者,具有十分密切的合作关系的公司。当然,随着生态域规模的扩大,寻找到已适配端的概率提高,生态域内各端的信任程度也相对降低,可以基于实际的需求对生态域的范围进行限定。
对于同属于一个生态域内的各端,由于其所属公司之间具有密切的关系,双方对于对方十分信任,即使是传输一些状态数据也不会产生隐私泄露的问题,而且利用自身的计算资源帮助对方处理一些数据也不会产生太大的影响,保证了该处理方式的有效实现。并且由于用户已经安装了第一投放目标端,说明用户可能对于第一投放目标端所属公司所在的生态域是具有一定信任程度的,故而用户也有较大可能会安装在该生态域内的其他端,此时,更容易筛选得到第二投放目标端。
在本说明书一个或多个实施例中,如果通过能力对比,判断小程序中存在有自定义的JSAPI(属于不规范的JSAPI中的一种,为了其他客户端的需求进行定制的JSAPI),且该自定义的JSAPI适配于同一个指定生态域中的第二端,则由于双方属于同一生态域,第二端的开发人员在开发小程序的过程中很有可能已经考虑到了该JSAPI不适配于当前的投放目标端。此时,判断该自定义的JSAPI是否已经针对该投放目标端进行了兼容处理,如果进行了,则可以认为其不具备能力适配问题,如果未进行,则认为其存在能力适配问题。兼容处理可以是该自定义的JSAPI能够在该投放目标端上直接正常使用,或者是在投放目标端上使用小程序时,即使无法正常使用,也可以向用户发出相应的提示(比如,提示用户可以前往第二端继续执行相应的动作)。
图2为本说明书一个或多个实施例提供的,一种应用场景下的能力查询、录入、对比以及对齐建设的流程示意图。首先需要确定小程序统一标准(比如,同一个生态域内或者同一个国家标准、国际标准下研发的小程序应用的标准),包括JSAPI标准、组件标准、插件标准、云函数标准等。然后根据该统一标准进行能力录入,通过各开放平台ISP、能力中心ISP将相应的能力录入至小程序能力交换中心。能力交换中心通过能力库存储已录入的能力,在该中心还可以基于各能力的更新,进行能力升级、能力下线等。用户可以通过能力中心平台的多端能力展示(比如,通过设置在不同位置的多个智能终端展示)来进行能力查询和能力管理。
在能力录入完毕之后,可以进行能力互投对比,能力互投指的是,为了在某个投放目标端上线而研发的小程序,在其他投放目标端上投放时所进行的能力对比过程。应用中心中包括多个小程序,将需要互投的小程序添加到互投中心,通过静态分析以及动态分析的方式生成能力对比报告,静态分析和动态分析分别表示,小程序在未运行和运行状态下的分析。若是对比通过,不存在能力适配问题,则可以由相关操作人员投放至其他投放目标端,并在互投中心中对该小程序进行标注。若是对比未通过,则可以进行能力对齐建设,比如,通过相应工具进行代码手动补全、自动补全,将小程序进行改造。或者,对投放目标端进行基础能力建设,通过建站平台获取SDK后,在投放目标端上进行端集成、端发布,此时,可以在小程序能力交换中心中,将基础能力建设后的投放目标端的能力进行录入更新。或者,通过获取账户权限、数据权限、第三方授权、插件化等其他能力方案进行改造。
图3为本说明书一个或多个实施例提供的,一种应用场景下的能力对比系统的整体框架的示意图,投放中心平台、开放平台为小程序投放的多方平台,小程序能力对比服务对小程序在这多方平台上的能力进行对比。对比流程主要包括源码获取,扫描配置读取,通过扫描配置进行扫描分析,最终产出解决方案。扫描分析过程主要以JS语言为例,分析JS语法树,找到所有的my.xx格式的JS调用节点,对调用节点分析确定小程序能力后与投放目标端进行能力对比,过滤出不支持的JS列表。能力扫描维度针对小程序方,包括使用的JSAPI列表、引用的插件、使用的RPC列表、使用的组件列表、可用的JSAPI、不规范的JSAPI等,针对投放目标端放,包括不可用的JSAPI列表、不可用插件、不支持的RPC列表、已兼容的JSAPI、自定义的JSAPI、不支持的跳转应用等。当然,这些只是用于举例的部分能力,其他的一些能力(比如,针对小程序方支持的跳转应用)等在此不再赘述。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,如图4、图5所示。
图4为本说明书一个或多个实施例提供的一种小程序投放装置的结构示意图,所述装置包括:
源码获取模块402,获取待投放的小程序的源码;
源码扫描模块404,按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
能力对比模块406,将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
改造投放模块408,若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
可选地,还包括:
任务创建调度模块410,根据所述小程序的应用标识和所述投放目标端,创建能力对比任务;
将所述能力对比任务加入持续集成引擎中进行调度,以便按照所述调度的结果,通过预定的扫描引擎执行所述能力对比任务。
可选地,还包括:
回调函数注册模块412,根据所述能力扫描维度,确定对应的语法树节点类型;
根据所述语法树节点类型,预先注册对应的回调函数;
所述源码扫描模块404,解析得到所述源码对应的语法树;
遍历所述语法树中的节点,针对遍历到的节点,利用对应的所述回调函数对该节点的内容进行扫描分析。
可选地,所述改造投放模块408,确定存在所述能力适配问题的第一投放目标端,以及不存在所述能力适配问题的已适配端;
根据所述已适配端,生成能力借调代码并集成至所述小程序中,用于投放至所述第一投放目标端;
所述装置还包括:
能力借调模块414,若所述第一投放目标端上的所述小程序需要使用所述能力适配问题对应的能力,则通过所述能力借调代码,唤起同设备上的所述已适配端,并将所述小程序当前的状态数据发送给所述已适配端,以进行能力借调;
接收所述已适配端返回的处理结果。
可选地,所述改造投放模块408,确定所述第一投放目标端所属的指定生态域;
在所述指定生态域中,以不存在所述能力适配问题为筛选条件,筛选得到已投放端或者所述一个或者多个投放目标端中的第二投放目标端,作为已适配端。
可选地,所述能力对比模块406,通过所述对比,判断所述小程序是否存在自定义的JSAPI,所述自定义的JSAPI适配于与所述投放目标端属于同一指定生态域的第二端;
若是,则判断所述自定义的JSAPI是否已经针对所述投放目标端进行了兼容处理;
若未进行所述兼容处理,则确定存在相应的能力适配问题。
可选地,所述小程序的能力包括以下至少一种:所使用的JSAPI、所应用的插件、所使用的RPC、所使用的组件、不规范的JSAPI、支持的跳转应用、在所述投放目标端可用的JSAPI。
图5为本说明书一个或多个实施例提供的一种小程序投放设备的结构示意图,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
基于同样的思路,本说明书一个或多个实施例还提供了对应于上述方法的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (15)

1.一种小程序投放方法,包括:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
2.如权利要求1所述的方法,所述对所述源码进行扫描之前,所述方法还包括:
根据所述小程序的应用标识和所述投放目标端,创建能力对比任务;
将所述能力对比任务加入持续集成引擎中进行调度,以便按照所述调度的结果,通过预定的扫描引擎执行所述能力对比任务。
3.如权利要求1所述的方法,所述对所述源码进行扫描之前,所述方法还包括:
根据所述能力扫描维度,确定对应的语法树节点类型;
根据所述语法树节点类型,预先注册对应的回调函数;
所述对所述源码进行扫描,具体包括:
解析得到所述源码对应的语法树;
遍历所述语法树中的节点,针对遍历到的节点,利用对应的所述回调函数对该节点的内容进行扫描分析。
4.如权利要求1所述的方法,所述对所述小程序进行相应改造,具体包括:
确定存在所述能力适配问题的第一投放目标端,以及不存在所述能力适配问题的已适配端;
根据所述已适配端,生成能力借调代码并集成至所述小程序中,用于投放至所述第一投放目标端;
所述投放至所述第一投放目标端后,所述方法还包括:
若所述第一投放目标端上的所述小程序需要使用所述能力适配问题对应的能力,则通过所述能力借调代码,唤起同设备上的所述已适配端,并将所述小程序当前的状态数据发送给所述已适配端,以进行能力借调;
接收所述已适配端返回的处理结果。
5.如权利要求4所述的方法,所述确定不存在所述能力适配问题的已适配端,具体包括:
确定所述第一投放目标端所属的指定生态域;
在所述指定生态域中,以不存在所述能力适配问题为筛选条件,筛选得到已投放端或者所述一个或者多个投放目标端中的第二投放目标端,作为已适配端。
6.如权利要求1所述的方法,所述确定是否存在能力适配问题,具体包括:
通过所述对比,判断所述小程序是否存在自定义的JSAPI,所述自定义的JSAPI适配于与所述投放目标端属于同一指定生态域的第二端;
若是,则判断所述自定义的JSAPI是否已经针对所述投放目标端进行了兼容处理;
若未进行所述兼容处理,则确定存在相应的能力适配问题。
7.如权利要求1~6任一项所述的方法,所述小程序的能力包括以下至少一种:所使用的JSAPI、所应用的插件、所使用的RPC、所使用的组件、不规范的JSAPI、支持的跳转应用、在所述投放目标端可用的JSAPI。
8.一种小程序投放装置,包括:
源码获取模块,获取待投放的小程序的源码;
源码扫描模块,按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
能力对比模块,将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
改造投放模块,若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
9.如权利要求8所述的装置,还包括:
任务创建调度模块,根据所述小程序的应用标识和所述投放目标端,创建能力对比任务;
将所述能力对比任务加入持续集成引擎中进行调度,以便按照所述调度的结果,通过预定的扫描引擎执行所述能力对比任务。
10.如权利要求8所述的装置,还包括:
回调函数注册模块,根据所述能力扫描维度,确定对应的语法树节点类型;
根据所述语法树节点类型,预先注册对应的回调函数;
所述源码扫描模块,解析得到所述源码对应的语法树;
遍历所述语法树中的节点,针对遍历到的节点,利用对应的所述回调函数对该节点的内容进行扫描分析。
11.如权利要求8所述的装置,所述改造投放模块,确定存在所述能力适配问题的第一投放目标端,以及不存在所述能力适配问题的已适配端;
根据所述已适配端,生成能力借调代码并集成至所述小程序中,用于投放至所述第一投放目标端;
所述装置还包括:
能力借调模块,若所述第一投放目标端上的所述小程序需要使用所述能力适配问题对应的能力,则通过所述能力借调代码,唤起同设备上的所述已适配端,并将所述小程序当前的状态数据发送给所述已适配端,以进行能力借调;
接收所述已适配端返回的处理结果。
12.如权利要求11所述的装置,所述改造投放模块,确定所述第一投放目标端所属的指定生态域;
在所述指定生态域中,以不存在所述能力适配问题为筛选条件,筛选得到已投放端或者所述一个或者多个投放目标端中的第二投放目标端,作为已适配端。
13.如权利要求8所述的装置,所述能力对比模块,通过所述对比,判断所述小程序是否存在自定义的JSAPI,所述自定义的JSAPI适配于与所述投放目标端属于同一指定生态域的第二端;
若是,则判断所述自定义的JSAPI是否已经针对所述投放目标端进行了兼容处理;
若未进行所述兼容处理,则确定存在相应的能力适配问题。
14.如权利要求8~13任一项所述的装置,所述小程序的能力包括以下至少一种:所使用的JSAPI、所应用的插件、所使用的RPC、所使用的组件、不规范的JSAPI、支持的跳转应用、在所述投放目标端可用的JSAPI。
15.一种小程序投放设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待投放的小程序的源码;
按照预定的能力扫描维度,对所述源码进行扫描,确定所述小程序的能力;
将所述小程序的能力与一个或者多个投放目标端的能力进行对比,确定是否存在能力适配问题;
若是,则对所述小程序和/或所述投放目标端进行相应改造后,再将所述小程序投放至所述投放目标端。
CN202110593120.7A 2021-05-28 2021-05-28 一种小程序投放方法、装置以及设备 Active CN113312055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110593120.7A CN113312055B (zh) 2021-05-28 2021-05-28 一种小程序投放方法、装置以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110593120.7A CN113312055B (zh) 2021-05-28 2021-05-28 一种小程序投放方法、装置以及设备

Publications (2)

Publication Number Publication Date
CN113312055A true CN113312055A (zh) 2021-08-27
CN113312055B CN113312055B (zh) 2023-02-24

Family

ID=77376042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110593120.7A Active CN113312055B (zh) 2021-05-28 2021-05-28 一种小程序投放方法、装置以及设备

Country Status (1)

Country Link
CN (1) CN113312055B (zh)

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7131122B1 (en) * 2000-08-24 2006-10-31 International Business Machines Corporation Apparatus, system and method for detecting old version of an applet in a client brower's JVM
US20150007199A1 (en) * 2013-06-28 2015-01-01 Vmware, Inc. Method and system for extending application programming interfaces
CN108984174A (zh) * 2018-07-03 2018-12-11 百度在线网络技术(北京)有限公司 跨平台的应用创建方法、装置、服务器和存储介质
CN109710260A (zh) * 2018-11-16 2019-05-03 青岛特锐德电气股份有限公司 一种基于多平台的小程序代码转换系统及转换方法
CN109918073A (zh) * 2019-01-29 2019-06-21 维沃移动通信有限公司 一种源码文件的生成方法、装置以及终端
CN110968325A (zh) * 2019-10-28 2020-04-07 苏宁云计算有限公司 一种小程序转换方法及装置
CN111124576A (zh) * 2019-12-23 2020-05-08 焦点科技股份有限公司 一种多平台小程序及h5页面适配的方法及系统
CN111159045A (zh) * 2019-12-31 2020-05-15 中国银行股份有限公司 一种兼容性问题检测方法、装置及存储介质
CN111381825A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111427569A (zh) * 2019-01-10 2020-07-17 北京嘀嘀无限科技发展有限公司 免安装程序适配方法、装置、电子设备及存储介质
CN111475142A (zh) * 2020-04-03 2020-07-31 支付宝(杭州)信息技术有限公司 一种小程序文件包的生成方法、装置及设备
CN111610978A (zh) * 2020-05-19 2020-09-01 中国建设银行股份有限公司 一种小程序转换方法、装置、设备及存储介质
CN111770184A (zh) * 2020-06-30 2020-10-13 浙江口碑网络技术有限公司 基于小程序实现服务的方法及装置
CN111880857A (zh) * 2020-07-17 2020-11-03 百度在线网络技术(北京)有限公司 小程序的下发方法、装置、设备以及存储介质
CN112149038A (zh) * 2020-10-13 2020-12-29 中国银行股份有限公司 浏览器开发方法、装置、计算机设备及可读存储介质
CN112527415A (zh) * 2020-12-23 2021-03-19 深圳尚米网络技术有限公司 小程序跨平台迁移方法、装置、设备和介质
CN112540925A (zh) * 2020-12-16 2021-03-23 贝壳技术有限公司 新特性兼容性检测系统及方法、电子设备及可读存储介质
CN112817660A (zh) * 2021-02-03 2021-05-18 百度在线网络技术(北京)有限公司 扩展小程序能力的方法、装置、设备以及存储介质
CN112835632A (zh) * 2019-11-06 2021-05-25 上海连尚网络科技有限公司 一种端能力的调用方法、设备和计算机存储介质

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7131122B1 (en) * 2000-08-24 2006-10-31 International Business Machines Corporation Apparatus, system and method for detecting old version of an applet in a client brower's JVM
US20150007199A1 (en) * 2013-06-28 2015-01-01 Vmware, Inc. Method and system for extending application programming interfaces
CN108984174A (zh) * 2018-07-03 2018-12-11 百度在线网络技术(北京)有限公司 跨平台的应用创建方法、装置、服务器和存储介质
CN109710260A (zh) * 2018-11-16 2019-05-03 青岛特锐德电气股份有限公司 一种基于多平台的小程序代码转换系统及转换方法
CN111427569A (zh) * 2019-01-10 2020-07-17 北京嘀嘀无限科技发展有限公司 免安装程序适配方法、装置、电子设备及存储介质
CN109918073A (zh) * 2019-01-29 2019-06-21 维沃移动通信有限公司 一种源码文件的生成方法、装置以及终端
CN110968325A (zh) * 2019-10-28 2020-04-07 苏宁云计算有限公司 一种小程序转换方法及装置
CN112835632A (zh) * 2019-11-06 2021-05-25 上海连尚网络科技有限公司 一种端能力的调用方法、设备和计算机存储介质
CN111124576A (zh) * 2019-12-23 2020-05-08 焦点科技股份有限公司 一种多平台小程序及h5页面适配的方法及系统
CN111159045A (zh) * 2019-12-31 2020-05-15 中国银行股份有限公司 一种兼容性问题检测方法、装置及存储介质
CN111381825A (zh) * 2020-03-06 2020-07-07 北京五八信息技术有限公司 一种小程序的生成方法和装置
CN111475142A (zh) * 2020-04-03 2020-07-31 支付宝(杭州)信息技术有限公司 一种小程序文件包的生成方法、装置及设备
CN111610978A (zh) * 2020-05-19 2020-09-01 中国建设银行股份有限公司 一种小程序转换方法、装置、设备及存储介质
CN111770184A (zh) * 2020-06-30 2020-10-13 浙江口碑网络技术有限公司 基于小程序实现服务的方法及装置
CN111880857A (zh) * 2020-07-17 2020-11-03 百度在线网络技术(北京)有限公司 小程序的下发方法、装置、设备以及存储介质
CN112149038A (zh) * 2020-10-13 2020-12-29 中国银行股份有限公司 浏览器开发方法、装置、计算机设备及可读存储介质
CN112540925A (zh) * 2020-12-16 2021-03-23 贝壳技术有限公司 新特性兼容性检测系统及方法、电子设备及可读存储介质
CN112527415A (zh) * 2020-12-23 2021-03-19 深圳尚米网络技术有限公司 小程序跨平台迁移方法、装置、设备和介质
CN112817660A (zh) * 2021-02-03 2021-05-18 百度在线网络技术(北京)有限公司 扩展小程序能力的方法、装置、设备以及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘送杰等: "基于微信小程序的CTS信息系统开发与应用", 《涟钢科技与管理》 *

Also Published As

Publication number Publication date
CN113312055B (zh) 2023-02-24

Similar Documents

Publication Publication Date Title
CN107979508B (zh) 微服务测试方法及装置
US9286040B2 (en) Software builder
US9760343B2 (en) Application builder based on metadata
US10834234B2 (en) Automatic interdependency resolution for micro-service deployments
CN110502222B (zh) 外发依赖内部基础库的aar方法、装置、介质和设备
CN109032825B (zh) 一种故障注入方法、装置及设备
CN107678748B (zh) 一种源代码文件编译方法及装置
US11474842B2 (en) Integration application creator design
CN111399840B (zh) 一种模块开发方法及装置
CN111090423A (zh) 一种webhook框架系统和实现主动调用、实现事件触发的方法
CN114579194B (zh) 一种基于Spring远程调用的异常处理方法和系统
CN115248700A (zh) 一种产品代码自动化构建移动安装包的方法和系统
CN114547569A (zh) 账户登录处理方法及装置
CN113835705A (zh) 大数据服务产品开发方法、装置及系统
CN113312055B (zh) 一种小程序投放方法、装置以及设备
CN111897565A (zh) 基于物联网的数据处理方法、装置和设备
CN109857374B (zh) 移动应用的开发方法及装置
CN111240998A (zh) 测试用例处理方法和装置
CN114518894A (zh) 程序更新处理方法及装置
CN114546843A (zh) 程序调试处理方法及装置
CN114449063A (zh) 一种报文处理方法、装置及设备
US20210042105A1 (en) System and method for implementing complex patching micro service automation
CN113032004A (zh) 在开发环境中管理开发作业的方法、设备和程序产品
CN110083589A (zh) 一种面向航电系统的能力仓库
CN112558975B (zh) 组件的代码切换方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230106

Address after: Room 1701-1708, 17/F, No. 501, Yincheng Middle Road, Pilot Free Trade Zone, Pudong New Area, Shanghai, 201207

Applicant after: Alipay.com Co.,Ltd.

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant before: Alipay (Hangzhou) Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant