umu怎么用手机在umu上传文档?


每个组织都有不同的业务管理需求,一款好用的办公软件先应该具备灵活的产品结构,可以开放融合各类业务应用,让组织在一个平台高效办公。
泛微平台化的OA产品,以流程、门户、内容、集成、消息、组织、建模等7大引擎为基础,可以帮助客户统一人员管理、打造便捷的业务集成接口,与各类业务软件无缝集成,让客户在一个平台上协同办公。
1、ERP业务管理软件:
包括:SAP(R3、A1、B1)、Oracle(EBS、JDE)、微软(Microsoft Dynamics AX)等、 用友(NC、NC6、U8)、金蝶(K3、EAS、cloud)、浪潮等、麦浩ERP、鼎捷ERP、QAD
应用场景:
① 实现单点登录
② 实现组织架构和人员数据同步
③ OA作为业务操作平台,业务系统作为数据存储系统,各类采购、仓储、财务等业务,可以直接在OA平台发起业务办理流程,不仅OA的电子表单可以自由提取业务软件中的业务信息,所有新更业务信息也会自动同步到业务系统储存。
2、CRM客户关系管理软件:
包括:Salesforce、呼叫中心系统、企业名片王、合合名片扫描
应用场景:
① Salesforce
在涉及客户关系的业务流程中,OA可以自动触发salesforce系统,调取有效客户数据,其中包括:老客户调价、新老客户报价、客户管理、技术支持和质量支持、合同、费用明细等流程;同时业务更新的数据,OA也能自动同步到salesforce储存。
② 呼叫中心系统
可以在查询客户卡片的过程中,通过号码记录自动创建通话连接。
③ 名片应用集成
通过与名片类应用集成,在满足销售人员日常名片扫描录入、交换、管理、沟通的过程中,将客户信息自动同步到OA,帮助组织建立客户档案库。
3、HRM人事管理类软件:
包括:金蝶S-HR、宏景EHR、上勤HR、郎新HR、易鑫人事系统、嘉扬HR、易路HR、HRone系统、红海EHR、SAP SuccessFactors(HR SaaS系统 )、北森系统、摩卡系统、合协HR系统、万古EHR、施特伟HR系统、图谱招聘系统
应用场景:
① 实现单点登录,OA作为流程操作平台,HR系统作为人事数据存管平台。
② OA流程内的电子表单也能自动调取HR系统内的人事信息实现自动填报。
③ 同时,OA系统的请假申请、加班、入职申请数据也会自动同步到HR系统存储。
4、移动办公、即时通讯软件:
包括:钉钉、企业微信、金蝶云之家、Joy Work(乐工)、eSpace(华为用户专用)、友空间、华为welink、轻推、融云即时通讯、RabbitMQ、微软Lync、有度即时通
应用场景:
应用、数据一键集成,各类业务待办信息自动同步到移动应用,用户直接在移动端就能查看各大业务系统的待办任务,实现待办业务消息及时提醒,统一处理渠道,用户及时发现、处理,提高工作效率。
5、电子签章系统:
包括:契约锁
应用场景:
将电子印章、电子签名接入OA系统,让OA系统中的各类业务流程具备电子用印、签名能力,实现无纸化业务办理环境。
6、政务类办公服务系统:
包括:执掌易、书生公文系统、软虹公文系统、组织内部党建系统
应用场景:
① 执掌易:
统一待办、消息内容。OA流程相关的应用嵌入到执掌易平台,包含待办事宜、已办事宜、我的请求、我的流程等。
② 公文系统
各类公文从OA进行签发审批,审批后OA将OFD版式文件推送到公文交换系统,公文系统将盖章并下发的OFD版式文件回传到OA。
7、会议管理类系统:
包括:ZOOM视频会议系统、搜麦会议系统、电话会议系统、傲视多媒体会议系统
应用场景:
① ZOOM视频会议系统
通过OA创建视频会议申请流程,自动实现会议冲突校验,生成会议列表,随时通过PC或者手机端进行视频会议。
② 搜麦会议系统
将会议系统的会议室信息自动同步到OA,帮助OA流程迅速创建新的会议日程,同时,任何的会议修改、取消操作,双方系统都能自动同步,防止信息断裂。
8、财务类应用软件:
包括:元年、国信影像系统、每刻系统、奔图扫描仪、拜特资金系统、凭证系统、航信电子发票集成、开票系统、NC财务系统
应用场景:
① 国信影像系统
满足财务流程中各个节点对影像的查阅需求。比如借款、还款、报销、付款发票核销申请等,可以随时在电子表单中查看影像。
此外,OA流程生成的条形码,国信也能扫描识别,获取流程编号。
② 每刻系统
实现单点登录,直接将OA端的财务报销数据一键同步到每刻系统,随时移动发起报销,报销情况还能自动回传到OA记录。
③ 奔图扫描仪
通过OA流程触发扫描仪开始扫描和获取扫描仪返回的文件。
④ 拜特资金系统
从OA发起的开户申请,经审批后,将开户的相关信息传递给拜特系统。
9、商旅类服务软件:
包括:慧通APP、携程商旅、胜意商旅系统、AMEX系统(国旅运通全球商务旅行系统)、中兴商旅系统、宝库订票系、阿里商旅、飞猪、美亚
应用场景:
① 移动差旅系统集成OA,实现移动端单点登录。
② 客户直接从OA提起出差申请流程,审批完成后系统自动将人员、出差单号、日期、城市、出发及离开时间等机票、酒店预订所需信息,自动同步到商旅系统订票、订酒店。
10、客服类管理系统:
包括:Udesk
应用场景:
接收udesk工单数据,并创建相应的审批流程,审批结束,将审批状态回写到udesk。
11、招、采类业务系统:
包括:采购系统、订单系统、招投标平台等
应用场景:
OA系统作为采购、招标业务流程办理平台,生成的各类订单、产品、供应商信息自动更新到业务软件,实现数据与流程互联,推动业务办理效率。
12、SRM供应商管理系统:
包括:汉得SRM系统
应用场景:
实现单点登录,在采购、供应商管理过程中让OA与SRM系统数据同步更新,以采购、招投标等业务流程驱动供应商数据变动,构建供应商信息库,提升组织招、采质量。
13、档案类管理软件:
包括:清华紫光档案系统、东软档案系统、中信档案系统、飞扬档案系统
应用场景:
OA与档案系统集成后,各类公文、人员、产品等信息,会随着OA流程的审批变动,根据信息类型自动同步到档案系统,建立电子档案库。
14、任务类管理工具:
包括:金智任务中心、itask个人任务管理系统
应用场景:
统一待办,OA直接将待办任务推送到PC或移动端任务管理平台,客户直接在任务中心就能查看已办、流程跟踪。
15、资产类管理系统:
包括:资产管理软件、RFID系统、BOM系统(物料清单)
应用场景:
可以以OA为资产业务办理平台,比如新增、报废、领用、维修等业务流程申请,同时,OA电子表单可以直接调取资产管理系统中资产信息,保证资产管理平台数据与OA同步更新。
同时通过RFID系统帮助建立资产、物料标签,实现实物与信息一一对应。
16、证照类管理系统:
应用场景:
实现单点登录,OA和证照系统实现信息共享,各类证照的借用、更新、作废流程直接在OA进行,流程归档的同时触发证照系统更新信息。
17、房地产分销ERP管理软件:
包括:明源ERP、天问ERP、盟拓系统、城市更新系统
应用场景:
通过集成OA系统,实现地产组织的机构与人员信息以及楼盘信息同步管理,用OA流程打造地产楼盘销售业务管理闭环,提升组织业务数据使用价值。
OA表单不仅可以自动抓取ERP系统业务信息,OA流程发生的新业务信息也能自动同步到ERP软件。
18、服饰行业管理服务软件:
包括:伯俊ERP、浪莎软件
应用场景:
与OA实现单点登录,借助OA流程打造集零售、商品、库存等于一体的管理闭环。
19、社区、物业服务型软件:
包括:千丁互联(千丁IM)、思源ETS
应用场景:
实现单点登录,实现统一待办。实现数据共享,在OA流程节点自由调取业务系统相关社区、物业信息。
20、医疗、医药行业服务系统:
包括:HIS系统、联众智慧信息集成平台、手麻系统(监护设备数据采集系统和麻醉信息管理系统)、英克(INCA)系统、HRP系统
应用场景:
① HIS系统
OA与HIS实现信息共享,各类住院、停诊、开药等业务直接从OA发起流程申请,审批完成的业务信息会同步回写到HIS系统记录,比如:
通过生成的住院号医护人员可以直接在HIS系统中提取病人的基础信息。
HIS中各类专家的坐诊信息会随着OA中的停诊流程变动,同步更新。
医生在HIS中点击开药后自动触发OA流程,经过审批后回写至HIS。
② 手麻系统
通过集成手麻系统,可以通过OA系统直接控制常规手术的审批。
③ 联众智慧信息集成平台
与OA实现组织架构、人员信息同步。
④ 英克(INCA)系统
实现连锁药店绩效考核管理,OA考核流程可以直接调取英克系统内的数据。
21、高校教务管理系统:
包括:正方系统、学校内部系统、微哨APP、金智、校园宝、青果数字校园综合管理平台
应用场景:
① 统一身份认证,实现单点登录;将OA的高效审批流与教务系统对接,实现高效排课、选课、考试、成绩管理,统一师生信息,高效教学。
② OA通过与学校内部的一卡通系统、邮件系统、图书馆管理系统、考勤系统集成,实现单点登录、集中操作。
22、组织培训、学习管理软件:
包括:云学堂、UMU培训系统、杰佛考试系统、时代光华
应用场景:
① 实现OA单点登录,将OA中的组织成员信息同步到云学堂,借助OA电子流程为员工统一安排产品等各项知识培训、考试。
② 将学习数据自动归档到OA表单,形成员工培训考核档案,帮助组织实现日常学习评估、招聘测试、岗位晋升、资格认证等多种一体化培训需求。
23、销售型业务管理软件:
包括:智能POS运营系统、银惠通系统、EOS订货系统
应用场景:
① 通过集成OA,用户在泛微发起流程,填写开设平台所需的基础信息。流程审批到达“开设平台”节点时,自动推送数据到POS管理平台系统、生成平台账号。
② 通过基础数据查询接口,在泛微流程表单中,就能够自动获取银惠通系统中区域列表、银行列表、银行支行列表、归属大区分公司列表等,实现信息共享。
③ 通过集成EOS系统,借助OA流程将各类订货信息传递给供应商,实现从订货、接单、处理、供货到结算的一体化管理。
24、数据报表分析系统:
包括:SAP HANA数据库、政企效益分析系统、易宝报表系统、帆软报表、PostgreSQL、PeopleSoft数据
应用场景:
① 报表系统直接将OA端操作收集的数据自动分析、统计,通过OA门户呈现出来,读取方便。
② 通过数据源支持PostgreSQL,客户日常考勤数据可以使用该数据源进行配置导入。
25、PM管理系统:
包括:JIRA、禅道系统
应用场景:
实现单点登录,让OA流程与PM数据结合,帮助实现电子表单自动填报,项目数据自动多系统同步更新,同步查询,使用方便。
26、视频监控系统:
包括:海康威视视频系统
应用场景:
将OA中的报表以及具体操作页面通过大屏视频系统高清呈现,方便交通管理部门、政府及地产等大型组织实时监控项目。
27、银行类业务系统:
包括:银行、网银系统、头寸系统、柜台业务平台
应用场景:
① 网银系统
通过集成,OA提交的财务流程可以直接对接银行付款,实现银企直联。OA系统可以自动读取网银系统的支付数据,通过微信、短信、邮件等方式,提醒发起人“已付款”。
② 头寸系统
主要针对银行业客户,通过集成,银行业客户可以直接从头寸系统调用OA流程进行日常款项审批,审批后的表单数据同步回传到头寸系统,确保业务数据与业务流程统一。
③ 柜台业务系统
帮助各类金融行业柜台业务实现无纸化签署,客户只需在柜台通过移动设备就能查看业务信息,柜员无需打印直接通过系统与客户发起线上签署,节省业务办理时间。
28、单点登录系统:
包括:AD域、LDAP、IBM Tivoli Access Manager WebSEAL、4A系统、竹云权限系统、浪潮门户SSO平台、派拉系统(身份认证)、神州融信UTrust SSo、Sharepoint门户系统、CA认证系统
应用场景:
① 通过实名认证实现单点登录。
② 实现简单的权限目录设置,AD储存的人员信息,比如:办公地点、人员状态(如,试用、在职、离职)可直接同步到OA。
29、企业邮箱类软件:
包括:腾讯企业邮箱、亿邮邮箱、exchange邮箱、163邮箱、CoreMail邮件系统、网易邮箱、阿里云邮箱、OUTLOOK
应用场景:
① OA中的组织架构和人员同步到企业邮箱,并能查看同步日志。
② 收到的邮件,OA端自动生成邮箱待办消息,单点即刻进入邮箱查看详细信息。
③ OA中归档的请假流程信息,可以按照标题、请假起始时间等信息,自动同步到请假人的exchange邮箱的日历模板。
30、文档型数据库服务器:
包括:DOMINO系统、FTP服务器、商密系统、Oracle UCM
应用场景:
① DOMINO系统
多应用于企事业单位内部公文管理业务中。可以实现OA系统和DOMINO系统进行定时同步公文数据,实现公文信息一体化管理。
② FTP服务器
文档传输协议,OA系统归档的流程允许定时和手动归档至FTP服务器的指定目录下。
③ 商密系统
集成后,重要业务文件可以在OA系统进行加密标识,控制下载、查看权限,保障文件安全性。
31、移动终端设备管理:
包括:华为AnyOffice、ZIYA企业移动管理平台
应用场景:
① 华为AnyOffice
统一待办、统一消息,OA的流程等消息通知自动同步到anyoffice,包括资产、设备、应用、内容等统一管理。
② ZIYA企业移动管理平台
为了安全,泛微EM集成SDK,统一入口、统一身份认证。
32、影音识别系统:
包括:汉王高拍扫描仪、奔图扫描仪、紫光高拍仪
应用场景:
在流程表单中创建“扫描”按钮,点击扫描后调出拍摄界面,点击拍摄后将所拍文档自动上传到流程附件设置好的目录中,帮助组织快速录入各类纸质文件。
33、BPM流程管理系统:
应用场景:
实现OA与BPM消息、流程统一待办。
34、应用集成基础服务平台:
包括:SAP PI、微软Biztalk
应用场景:
实现接口集成,为客户按需定制业务场景。
35、云盘管理工具:
包括:亿方云盘、七牛云、鸿翼云盘
应用场景:
主要满足客户业务流程附件中需要单编辑、修改、上传、预览、下载的文件,接入云盘系统后,可以直接通过OA流程,在附件表单中直接调取云盘实现在线预览、编辑。
同时,还能借助OA为文件储存设置文件编码,实现有序存储,高效共享。
36、分布式发布订阅消息系统:
包括:Kafka
应用场景:
通过Kafka接收待办数据在OA展示,点击链接到第三方系统进行处理,处理后自动删除OA的待办数据。
37、门禁管理系统:
应用场景:
主要针对企业的访客管理业务,各类拜访事前通过OA提交接待流程,审批通过后OA系统将访客信息推送到门禁系统,访客拜访时凭借“二维码、车牌、身份”等信息高效通行。
38、ITSM管理系统:
应用场景:
实现流程和待办消息同步。
系统发生重大变更或者新系统上线,信息技术部可以直接在OA系统发起“重大变更以及系统上新流程”,OA审批完成后,ITSM系统自动生成变更工单,并且自动关联OA流程编号以及变更内容。
39、基础办公服务工具:
包括:考勤机、启信宝、短信平台、ibeacon、扫描枪
应用场景:
① 帮助客户将考勤设备中的考勤数据导入OA系统,帮助考勤分析;集成启信宝后,可以直接在OA表单中查看供应商或者客户的“工商信息、司法诉讼信息、风险信息、经营信息、知识产权信息”。
② 同时,短信系统的接入帮助实现业务定时、预警提醒功能,通过OA流程自动触发提醒短信给当事人。
③ 借助ibeacon设备可以帮助连锁商店实现定位打卡,方便考勤数据一体化管理。
④ 借助扫描枪,在财务报销等流程中可以直接扫描上传发票,提升传输效率
40、劳动力管理系统:
包括:盖雅工场
应用场景:
组织架构统一维护,所有HR流程均在OA系统处理,减少部门领导审批操作。
41、物资管理系统:
包括:IBM物资系统、仓储系统
应用场景:
OA系统通过读取IBM物资系统提供的视图,将其待办信息集成到OA系统个人门户中。
42、物流管理系统:
包括:运输管理系统(TMS)、物流核算系统(BMS)等
应用场景:
将订单管理、配载作业、调度分配、行车管理、GPS车辆定位系统、车辆管理、人员管理等基本信息与OA系统同步,形成订单、仓储、运输、核算闭环管理。
平台化的办公体验为组织提供了一个“沟通、管理、业务、财务、应用”一体化的工作平台,让组织无论规模大小,只需一套系统就能处理日常办公。
平台化的办公不仅解决了组织办公需要登录“多业务系统”的麻烦,还能让系统像积木一样灵活搭建应用场景,让组织办公系统更具拓展性,让组织资源高效使用,真正实现协同的办公、统一的企业。
}

引言
相信大家都会对微信支付非常熟悉,什么样的开发场景能少得了支付的环节呢?
Let's do it~
开发接入官方文档阅读
不知几何时起,有人就跟我提过,微信小程序的开发离不开微信官方文档的说明,需要反复看个多遍,其义自见,请允许我多说了这些废话。
参考阅读微信支付官方参考文档
对比JSAPI、JSSDK的异同点
因为小程序调起支付页面的协议是HTTPS(程序访问商户服务都是通过HTTPS)开发部署的时候需要安装HTTPS服务器(此处就不延伸扩展安装https服务了)
现提供另外一种方式,阿里云申请免费SSL证书并在Nginx上进行安装
业务说明
业务流程
商户系统和微信支付系统主要交互:
1、小程序内调用登录接口,获取到用户的openid,api参见公共api【小程序登录API】
2、商户server调用支付统一下单,api参见公共api【统一下单API】
3、商户server调用再次签名,api参见公共api【再次签名】
4、商户server接收支付通知,api参见公共api【支付结果通知API】
5、商户server查询支付结果,api参见公共api【查询订单API】
微信支付 Java后端
前面赘述了那么多官方文档的开发简介,下面开始真正的实战!
微信小程序支付的前置准备:
1.微信商户平台账号
2.微信小程序账号
3.微信小程序开通支付接口(个人暂时不支持开通支付)
前台需要的操作:
1.登录获取code,传给开发者后台
6.获取后台传过来的值调用wx.requestPayment方法
后台需要的操作:
2.通过前台传过来的code来获取用户的openId
3.生成sign
4.获取perpay_id
5.再生成一次前台需要的paySign
一、小程序登录API
具体操作:
小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
#示例代码
//app.js
App({
onLaunch: function() {
wx.login({
success: function(res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
});
}
})
将临时登录凭证code回传到开发者服务器
wx.request({
url: 'https://URL',//后台URL
data: {},//登录获取的code
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header//后台规定的请求头
success: function(res){
// success
},
fail: function(res) {
// fail
},
complete: function(res) {
// complete
}
})
登录凭证校验
此波操作是在开发者服务器进行的。
临时登录凭证校验接口是一个 HTTPS 接口,开发者服务器使用 临时登录凭证code 获取 session_key 和 openid 等。
开发者服务器通过code获取openid只需要访问这个链接:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数
参数
必填
说明
appid

小程序唯一标识
secret

小程序的 app secret
js_code

登录时获取的 code
grant_type

填写为 authorization_code
在不满足UnionID下发条件的情况下,返回参数
参数
说明
openid
用户唯一标识
session_key
会话密钥
在满足UnionID下发条件的情况下,返回参数
参数
说明
openid
用户唯一标识
session_key
会话密钥
unionid
用户在开放平台的唯一标识符
注意:
会话密钥session_key 是对用户数据进行加密签名的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。
UnionID 只在满足一定条件的情况下返回。具体参看UnionID机制说明
临时登录凭证code只能使用一次
返回说明
//正常返回的JSON数据包
{
"openid": "OPENID",
"session_key": "SESSIONKEY",
}
//满足UnionID返回条件时,返回的JSON数据包
{
"openid": "OPENID",
"session_key": "SESSIONKEY",
"unionid": "UNIONID"
}
//错误时返回JSON数据包(示例为Code无效)
{
"errcode": 40029,
"errmsg": "invalid code"
}
统一下单API
商户在小程序中先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付。
接口链接
URL地址:
https://api.mch.weixin.qq.com/pay/unifiedorder
这个链接必须是xml格式的,前台是没法调用的。
请求参数
字段名
变量名
必填
类型
示例值
描述
小程序ID
appid

String(32)
wxd678efh567hg6787
微信分配的小程序ID
商户号
mch_id

String(32)
1230000109
微信支付分配的商户号
设备号
device_info

String(32)
013467007045764
自定义参数,可以为终端设备号(门店号或收银设备ID),PC网页或公众号内支付可以传"WEB"
随机字符串
nonce_str

String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,长度要求在32位以内。推荐随机数生成算法
签名
sign

String(32)
C380BEC2BFD727A4B6845133519F3AD6
通过签名算法计算得出的签名值,详见签名生成算法
签名类型
sign_type

String(32)
MD5
签名类型,默认为MD5,支持HMAC-SHA256和MD5。
商品描述
body

String(128)
腾讯充值中心-QQ会员充值
商品简单描述,该字段请按照规范传递,具体请见参数规定
商品详情
detail

String(6000)
商品详细描述,对于使用单品优惠的商户,改字段必须按照规范上传,详见“单品优惠参数说明”
附加数据
attach

String(127)
深圳分店
附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。
商户订单号
out_trade_no

String(32)
20150806125346
商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
标价币种
fee_type

String(16)
CNY
符合ISO 4217标准的三位字母代码,默认人民币:CNY,详细列表请参见货币类型
标价金额
total_fee

Int 88
订单总金额,单位为分,详见支付金额
终端IP
spbill_create_ip

String(16)
123.12.12.123
APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
交易起始时间
time_start

String(14)
20091225091010
订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
交易结束时间
time_expire

String(14)
20091227091010
订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期,所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。其他详见时间规则 建议:最短失效时间间隔大于1分钟
订单优惠标记
goods_tag

String(32)
WXG 订单优惠标记,使用代金券或立减优惠功能时需要的参数,说明详见代金券或立减优惠
通知地址
notify_url

String(256)
http://www.weixin.qq.com/wxpay/pay.php
异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
交易类型
trade_type

String(16)
JSAPI
小程序取值如下:JSAPI,详细说明见参数规定
商品ID
product_id

String(32)
12235413214070356458058
trade_type=NATIVE时(即扫码支付),此参数必传。此参数为二维码中包含的商品ID,商户自行定义。
指定支付方式
limit_pay

String(32)
no_credit
上传此参数no_credit--可限制用户不能使用信用卡支付
用户标识
openid

String(128)
oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。openid如何获取,可参考【获取openid】。
举例如下:
<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id>10000100</mch_id>
<detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>
注:参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。
总结一下请求参数必填项
字段名
变量名
描述
小程序ID
appid
微信分配的小程序ID
商户号
mch_id
微信支付分配的商户号
随机字符串
nonce_str
随机字符串,长度要求在32位以内。推荐随机数生成算法
签名
sign
通过签名算法计算得出的签名值,详见签名生成算法
商品描述
body
商品简单描述,该字段请按照规范传递,具体请见参数规定
商户订单号
out_trade_no
商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-*且在同一个商户号下唯一。详见商户订单号
标价金额
total_fee
订单总金额,单位为分,详见支付金额
终端IP
spbill_create_ip
APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
通知地址
notify_url
异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
交易类型
trade_type
小程序取值如下:JSAPI,详细说明见参数规定
用户标识
openid
trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。openid如何获取,可参考【获取openid】。
以上提及的参数格式参考微信支付参数规定
返回结果
字段名
变量名
必填
类型
示例值
描述
返回状态码
return_code

String(16)
SUCCESS
SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息
return_msg

String(128) 签名失败
返回信息,如非空,为错误原因
签名失败 参数格式校验错误
以下字段在return_code为SUCCESS的时候有返回
字段名
变量名
必填
类型
示例值
描述
小程序ID
appid

String(32)
wx8888888888888888
调用接口提交的小程序ID
商户号
mch_id

String(32)
1900000109
调用接口提交的商户号
设备号
device_info

String(32)
013467007045764
自定义参数,可以为请求支付的终端设备号等
随机字符串
nonce_str

String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
微信返回的随机字符串
签名
sign

String(32)
C380BEC2BFD727A4B6845133519F3AD6
微信返回的签名值,详见签名算法
业务结果
result_code

String(16)
SUCCESS
SUCCESS/FAIL
错误代码
err_code

String(32)
SYSTEMERROR 详细参见下文错误列表
错误代码描述
err_code_des

String(128)
系统错误 错误信息描述
以下字段在return_code 和result_code都为SUCCESS的时候有返回
字段名
变量名
必填
类型
示例值
描述
交易类型
trade_type

String(16)
JSAPI
交易类型,取值为:JSAPI,NATIVE,APP等,说明详见参数规定
预支付交易会话标识
prepay_id

String(64)
wx201410272009395522657a690389285100
微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
二维码链接
code_url

String(64)
URl:weixin://wxpay/s/An4baqw
trade_type为NATIVE时有返回,用于生成二维码,展示给用户进行扫码支付
举例如下:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx2421b1c4370ec43b]]></appid>
<mch_id><![CDATA[10000100]]></mch_id>
<nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
<openid><![CDATA[oUpF8uMuAJO_M2pxb1Q9zNjWeS6o]]></openid>
<sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
<trade_type><![CDATA[JSAPI]]></trade_type>
</xml>
此大项步骤用于生成sign和得到prepay_id(此处后台用JAVA由于后台代码太多,我就放在最后面,有需要的可以自己进行查看)
其中获取prepay_id生成的sign需要的参数是我遇到的一个坑,请一定要注意你往微信传的值都是sign需要的value,其中openId在参数必填里面写的是“否”,但是微信小程序支付用到的trade_type是JSAPI,所以微信小程序的openId也是必须的参数。
当这些都准备好了之后你就可以获取perpay_id。
再次签名即为小程序调起支付API
小程序调起支付数据签名字段列表:
字段名
变量名
必填
类型
示例值
描述
小程序ID
appId

String
wxd678efh567hg6787
微信分配的小程序ID
时间戳
timeStamp

String
1490840662
时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
随机串
nonceStr

String
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,不长于32位。推荐随机数生成算法
数据包
package

String
prepay_id=wx2017033010242291fcfe0db70013231072
统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=wx2017033010242291fcfe0db70013231072
签名方式
signType

String
MD5
签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
举例如下:paySign =
MD5(appId=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111)
= 22D9B4E54AB1950F51E0649E8810ACD6
调用wx.requestPayment(OBJECT)发起微信支付
Object参数说明:
参数
类型
必填
说明
timeStamp
String

时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
nonceStr
String

随机字符串,长度为32个字符以下。
package
String

统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=***
signType
String

签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
paySign
String

签名,具体签名方案参见微信公众号支付帮助文档;
success
Function

接口调用成功的回调函数
fail
Function

接口调用失败的回调函数
complete
Function

接口调用结束的回调函数(调用成功、失败都会执行)
回调结果:
回调类型
errMsg
说明
success
requestPayment:ok
调用支付成功
fail
requestPayment:fail cancel
用户取消支付
fail
requestPayment:fail (detail message)
调用支付失败,其中 detail message 为后台返回的详细失败原因
示例代码:
wx.requestPayment(
{
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){},
'fail':function(res){},
'complete':function(res){}
})
本步骤在于从上步骤获取到的preppay_id作为请求参数,返回paySign参数。
有了prepay_id之后,再获取paySign(前台需要的)。这里不一定需要后台生成,前台也有相关的代码来生成。
所需要的参数:appId,nonceStr,package,signType,timeStamp,key这是我遇到的坑二,因为上步骤中获取到prepay_id时会给你返回一个sign,我之前以为是这个。
支付结果通知API
支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。
对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)
注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。
该链接是通过【统一下单API】中提交的参数notify_url设置,如果链接无法访问,商户将无法接收到微信通知。
通知url必须为直接可访问的url,不能携带参数。示例:notify_url:“https://pay.weixin.qq.com/wxpay/pay.action”
代码贴士
得到sign的代码:
/**
* 微信支付签名算法sign
* @param characterEncoding
* @param parameters
* @return
*/
@Test
public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
sb.append("key=" + WeChatPayUtils.key);
System.out.println("字符串:"+sb.toString());
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
return sign;
}
MD5Util工具类代码如下:
package cn.cqzdkj.utils;
import java.security.MessageDigest;
public class MD5Util {
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null
"".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
}
然后在需要的地方直接调用上面的createSign这个方法就行了。
SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();
parameters.put("appid", appid);
parameters.put("mch_id", mch_id);
parameters.put("nonce_str",nonce_str);
parameters.put("body", body);
parameters.put("out_trade_no", "20170215");
parameters.put("total_fee", 1);
parameters.put("spbill_create_ip", "x.x.x.x");
parameters.put("notify_url","http://xxxxx.com");
parameters.put("trade_type", "JSAPI");
parameters.put("openid", "oGY_ZvxxxxxM");
parameters.put("sign","");
String characterEncoding = "UTF-8";
String mySign = createSign(characterEncoding,parameters);
System.out.println("我 的签名是:"+mySign);
小程序端完整代码如下:
/**
* 支付函数
* @param
{[type]} _payInfo [description]
* @return {[type]}
[description]
*/
pay:function(_payInfo,success,fail){
var payInfo = {
body:'',
total_fee:0,
order_sn:''
}
Object.assign(payInfo, _payInfo);
if(payInfo.body.length==0){
wx.showToast({
title:'支付信息描述错误'
})
return false;
}
if(payInfo.total_fee==0){
wx.showToast({
title:'支付金额不能0'
})
return false;
}
if(payInfo.order_sn.length==0){
wx.showToast({
title:'订单号不能为空'
})
return false;
}
var This = this;
This.getOpenid(function(openid){
payInfo.openid=openid;
This.request({
url:'api/pay/prepay',
data:payInfo,
success:function(res){
var data = res.data;
console.log(data);
if(!data.status){
wx.showToast({
title:data['errmsg']
})
return false;
}
This.request({
url:'api/pay/pay',
data:{prepay_id:data.data.data.prepay_id},
success:function(_payResult){
var payResult = _payResult.data;
console.log(payResult);
wx.requestPayment({
'timeStamp': payResult.timeStamp.toString(),
'nonceStr': payResult.nonceStr,
'package': payResult.package,
'signType': payResult.signType,
'paySign': payResult.paySign,
'success': function (succ) {
success&&success(succ);
},
'fail': function (err) {
fail&&fail(err);
},
'complete': function (comp) {
}
})
}
})
}
})
})
}
#参考于https://blog.csdn.net/sinat_35861727/article/details/73692794
推荐阅读更多精彩内容
微信小程序-微信支付签名验证在微信支付之后,小程序会主动向服务端发送支付状态.为了防止恶意篡改,必须生成签名发送给服务端进行验证. 签名生成官...Mr_Atom阅读 7,880评论 0赞 2
微信小程序微信支付接入开发本文主要讲述微信小程序接入微信支付开发过程中遇到的坑,分为两大块,小程序端和后台接口封装。本文主要内容如下: 一、...AI看舌阅读 8,716评论 2赞 50
}

我要回帖

更多关于 用手机在umu上传文档 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信