【微信支付】微信公众号支付接口文档V3.3.7
微信支付API文档120(受理)
1. 阅读对象本文阅读对象:商户系统(在线购物平台、人工收银系统、自动化智能收银系统或其他)集成微信支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师。
2. 术语1. 支付模式1) 被扫支付被扫支付是用户展示微信上“我的刷卡条码/二维码”给商户系统扫描后直接完成支付的模式。
主要应用线下面对面收银的场景。
2) 扫码支付扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
该模式适用于P C 网站支付、实体店单品或订单支付、媒体广告支付等场景。
3) 微信内网页支付微信内网页支付是用户在微信中打开商户的H5 页面,商户在H5 页面通过调用微信支付提供的JSAPI 接口调起微信支付模块完成支付。
应用场景有:•用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付;•用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付•将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付4) APP 支付APP 支付又称移动端支付,是商户通过在移动端应用APP 中集成开放SDK 调起微信支付模块完成支付的模式。
5) 普通浏览器网页支付模式正在建设中,敬请期待。
2. 名词解释1) 微信公众平台微信公众平台是微信公众账号申请入口和管理后台。
商户可以在公众平台提交基本资料、业务资料、财务资料申请开通微信支付功能。
平台入口:。
2) 微信开放平台微信开放平台是商户APP 接入微信支付开放接口的申请入口,通过此平台可申请微信APP 支付。
平台入口:。
3) 微信商户平台微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。
平台入口:。
4) 微信支付系统微信支付系统是指完成微信支付流程中涉及的API 接口、后台业务处理系统、账务系统、回调通知等系统的总称。
5) 商户收银系统商户收银系统即商户的POS 收银系统,是录入商品信息、生成订单、客户支付、打印小票等功能的系统。
【微信公众号支付】收货地址共享接口文档V1.4
收货地址共享接口文档V1.41 收货地址共享简介1.1 功能简介微信收货地址共享,是指用户在微信浏览器内打开商品H5 网页,填写过地址,后续支持快速选择免填写,也可增加和编辑。
此地址为用户属性,可在商户网页中共享使用。
支持原生控件填写地址,地址数据会传递到商户后台。
1.2 功能支持地址共享是基于微信JS API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。
同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。
以iPhone 版本为例,可以通过user agent可获取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206MicroMessenger/5.0"其中5.0 为用户安装的微信版本号,商户可以判定版本号是否高于或者等于5.0。
1.3 地址格式微信地址共享使用的数据字段包括:- 收货人姓名- 地区,省市区三级- 详细地址- 邮编- 联系电话其中,地区对应是国标三级地区码,如“广东省-广州市-天河区”,对应的是510630。
详情参考:HYPERLINK"/tjbz/xzqhdm/t20130118_402867249.html"2 公众号收货地址JS API 接口定义2.1 编辑并获取收货地址公众号编辑收货地址editAddress参数列表说明:addrSign 的生成规则如下。
参与addrSign 签名的字段包括:appId、url(当前网页url)、timestamp、noncestr、accessToken(用户授权凭证,请参照oauth2.0 协议获取)。
这里scope、signType 并不参与签名。
对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。
微信支付接入流程
微信支付接入流程
1:公众平台开发配置:1).支付授权目录(微信公众平台=>>微信支付=>>支付授权目录)支付授权目录配置说明:如果使用总部代收,则可以忽略,不用设置。
如果使用自己的公众号支付,需要填写:/payway/wxorderpay/ 如下图
2).网页授权接口(微信公众平台=>>开发者中心=>>网页授权获取用户基本信息)
网页授权信息填写内容: 如下图
2.微信支付商户号:10位(微信支付申请审核通过后,会往注册邮箱发送邮件,邮件内容里查看)
3.设置API密钥:32位(登录微信商户平台,账户设置=>>API安全=>>设置密钥)如下图
APPID :获取地址(微信公众平台=>> 开发=>>基本设置)如下图
4.AppSecret(微信公众平台=>> 开发=>>基本设置)如上图
5.支付接口配置(获取以上支付接口信息后,进入城市站管理平台 =>> 财务账户管理=>> 网上支付设置=>> 微信支付设置)填写相关信息如下图。
wxpay-payment-api
微信公众号支付接口文档V2.22V2.(内部文档,请勿外传)1.微信支付简介 (4)1.1功能简介 (4)1.2支付账户 (4)1.3支付方式 (5)1.4测试帐号 (6)2.JS API支付接口 (6)2.1支付场景 (6)2.2功能交互 (8)2.3获取当前微信版本号 (8)2.4显示微信安全支付标题 (8)2.5JS API支付接口(getBrandWCPayRequest)定义 (9)2.6订单详情(package)扩展字符串定义 (11)2.7支付签名(paySign)生成方法 (15)2.8接口使用示例 (16)3.Native(原生)支付接口 (17)3.1支付场景 (17)3.2基本交互 (18)3.3Native(原生)支付接口描述 (18)3.4Native(原生)支付URL定义 (18)3.5Native(原生)支付URL签名方式 (19)3.6Native(原生)支付回调商户后台获取package (20)4.通知接口说明 (22)4.1通知接口简介 (22)4.2补单机制 (22)4.3通知接口参数 (23)4.4后台通知结果返回 (27)4.5后台通知签名方式 (27)5.API接口说明 (30)5.1API接口简介 (30)5.2API使用方式 (30)5.3API列表 (30)5.3.1发货通知delivernotify (30)5.3.2订单查询orderquery (32)1.微信支付简介1.1功能简介微信支付,是基于微信客户端提供的支付服务功能。
同时向商户提供销售经营分析、账户和资金管理的技术支持。
用户通过扫描二维码、点击图文消息进入商品页面购买等多种方式调起微信支付模块完成支付。
目前微信支持公众号内支付。
其中支付方式,可以分为JS API支付、Native(原生)支付。
商户可以结合业务场景,自主选择支付形式。
本文将全面介绍公众号支付技术解决方案。
1.2支付账户商户向微信公众平台提交企业信息以及银行账户资料,审核通过并签约后,可以获得以下帐户(包含财付通的相关支付资金账户),用于公众号支付。
微信支付商户平台使用协议
微信支付商户平台使用协议1、特别提示本协议由财付通支付科技有限公司(为便于理解,下称“本公司”)为规范您(包括个人、个体工商户和企事业单位)使用微信支付商户平台(下称“本平台”)的行为而制定,具有合同法律效力。
您应认真阅读并遵守本协议、《微信支付违规商户处理规则》和《微信公众平台运营规范》。
请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、争议解决和法律适用条款。
免除或者限制责任的条款可能以加粗字体显示,您应重点阅读。
除非您已阅读并接受本协议和《微信公众平台运营规范》所有条款,否则您无权使用本平台。
您使用本平台即视为您已阅读并同意本协议和《微信公众平台运营规范》的约束。
如您有任何疑问,应向本公司客服咨询。
任何您之前与本公司签订的《微信支付服务协议》若与本协议有不一致之处,则不一致之处以本协议约定为准。
2、定义如无特别说明,下列术语在本协议中的定义为:2.1 微信公众帐号:指您在微信公众平台注册的,用于登录微信公众平台的帐号(以下或称“公众帐号”)。
2.2 微信支付服务:指本公司依托微信及微信公众平台为收付款人之间提供的货币资金转移服务。
2.3 微信支付商户号:指本公司为您配置的用来记载您的身份信息、交易信息、资金余额,您凭以发起交易指令的电子簿记。
微信支付商户号将与您提供的合法银行账户绑定,您的银行账户将根据您的交易指令和微信支付商户号的交易情况做相应的资金扣划和归集。
2.4 微信支付商户平台:指本公司提供和维护的商户管理软件系统,您应通过该系统提交相应资料和信息,进而开通微信支付。
成功开通后,您可以通过该系统使用微信支付商户号管理和营销推广等相关功能,具体功能以该系统实际提供的为准,且该系统将根据本公司的需要进行调整和增减。
2.5 商户平台登录账号:指您凭以登录本平台,操作微信支付商户号的账号,您成功申请微信支付商户号后,本公司将向您发送电子邮件,告知您的登录账号及初始密码,您可在本平台中修改该初始密码,您亦可在本平台的“员工管理”模块中为该登录账号设置多个附属登录账号及对应的登录密码,并为附属登录账号配置相应的操作权限。
微擎配置微信支付教程【公众号配置微信支付】
本篇教程针对微信对接好认证服务号后,配置微信支付的教程多应用模块都含有微信支付等功能,比如购买会员、购买商品等,有些模块在其本身的参数设置上就需要设置微信支付信息,大多数模块则是直接调用微信配置上的支付。
微信配置首先对接公众号后,我们点击公众号–设置–支付参数将对应信息填写好,确定保存。
这里网页支付参数,红色框的授权目录,我们需要添加到微信支付里面去,下面看微信支付的配置教程微信支付配置首先我们登陆微信支付后台,然后先把服务器IP添加一下,其实就是IP白名单的意思内网IP和外网IP在服务器实例可以查看如图所示,将授权目录添加上,注意http和https不要选择错了,否则是不能成功调用支付的。
至此,微信支付配置完成,如果模块里面有需要设置的话,按提示将对应信息填写上即可,基本就是商户号和密匙,公众号appid、appSecret信息,证书的信息即可现金红包产品功能微信支付商户后台–产品中心–查看是否开通,这个看行业吧,一般T+7的开通即有现金红包和企业付款到零钱产品自动可以开通,剩下的基本都是需要满足开通满90天,且一个月内每天有入账才能达到开通条件现金红包产品主要用于公众号发红包,比如黄河粉丝宝,全新裂变红包等一些吸粉模块用红包做为奖品的模块如果未开通现金红包产品,那么会发放红包失败企业付款到零钱产品功能这个功能其实也比较重要,大致是微信支付商户向用户发放钱。
比如模块含有用户提现的模块,用户申请提现,然后通过微信支付发放到用户,就需要这个产品了。
分销提现等都需要开通此产品大家注意一下。
尽量开通此产品功能模块配置微信支付下面挑选3个模块作为案例,其他的大致都是一样配置,大家多多举一反三,多操练首先确保已经配置好框架公众号主体的微信支付1.黄河粉丝宝模块配置微信支付(这类是红包类的,前提你微信支付已经开通了现金红包产品,没开通就不用配置了,配置了也无法使用)注意:各项数据一定要填写正确。
红包类默认是只能是发1-200块的红包。
微信支付jsapi(公众号支付)接口调用
微信⽀付jsapi(公众号⽀付)接⼝调⽤差不多两个⽉前的⼀个项⽬要使⽤微信线下⽀付本⼈并没有接触过这⽅⾯的知识,作为刚出道的⼩⽩,⼀个微信⽀付差点把我折磨的死去活来,查看了许多⽂章才把这个功能实现。
如今跑到成都重新找⼯作,学习的时候也正好写点总结,把⽀付这⼀块的知识整理下。
好了,接下来看微信⽀付jsapi接⼝是怎么调⽤的步骤⼀:获取微信⽀付四⼤参数⾸先要想⽀持微信⽀付,必须拥有两个账号微信公众平台:账户公众APPID,APPSECEPT ,微信商户平台商户ID, API密钥步骤⼆:平台配置1.配置⽀付⽬录:商户平台:配置此⽬录是代码中“微信⽀付”所在页⾯的地址需要ICP备案。
2.配置授权域名:微信公众平台:⽀付过程需要获取⽤户openid,必须经过⽹页授权配置才可以,要不然获取不到openid。
官⽅解释:⽤户在⽹页授权页同意授权给公众号后,微信会将授权数据传给⼀个回调页⾯,回调页⾯需在此域名下,以确保安全可靠。
回调页⾯域名不⽀持IP地址。
第⼀步:⽤户同意授权,获取code参数:appid:公众号的唯⼀标识 redirect_uri:重定向的url,就是授权后要跳转的页⾯ scope:应⽤授权作⽤域 snsapi_base:不弹出授权页⾯,直接跳转,只能获取⽤户openid snsapi_userinfo:弹出授权页⾯,可通过openid拿到昵称、性别、所在地 state:重定向后带的参数 ⽤户同意后会产⽣⼀个code,只有5分钟时间的有效期。
第⼆步:通过code换取⽹页授权access_token(微信⽀付只需要openid,获取到access_token之后只需要⾥⾯openid参数)"expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID",//微信j⽀付jsapi接⼝需要⽤到的参数"scope":"SCOPE" }步骤三调⽤接⼝统⼀下单微信统⼀下单API是微信⽀付的⼀个“统⼀”处理⼊⼝,官⽅给出的地址是https:///pay/unifiedorderhttps:///pay/unifiedorder(备⽤域名)需要的参数(此处使⽤服务商接⼝参数所以会有⼦商户的id 普通商户不需要)按照签名算法计算签名把所有要传递的参数键值对去掉值是空的,剩下的参数名ASCII码从⼩到⼤排序后,使⽤URL键值对格式(key1=value1&key2=value2...)拼接成StringA把StringA后⾯多加⼀组键值&key=商户平台密钥获得StringB把StringB按要求做"MD5"或"HMAC-SHA256"计算,并将结果字符转为⼤写微信甚⾄还提供了⼀个在线校验⼯具帮助开发者检查⽣成的签名是否正确,。
【微信支付】微信被扫支付接口文档V2.5.6
微信支付接口说明书
微信支付说明书V1.0 2016年04月修订页1.1.接口说明通过http post方式交互,请求报文为json格式,请求报文由商户号、交易命令、交易信息、signature(签名)组成,交易信息的内容需加签,整个交易信息需要进行加密,返回格式为json。
1.2.数据流程客户端处理流程1.拼装报文,对msg字段加签放入signature字段中2.对拼装后报文加密并发送3.接收服务器响应,解密4.对于接收的报文验证签名。
1.3.安全说明报文会对敏感字段(msg)进行MD5WITHRSA签名,并对整个报文RSA加密,加密说明见相关demo。
1.4.数据类型规则1.4.1.出现次数1)0..1——数据元值域可填,且出现一次,节点中必须出现,可空;2)0..n——数据元值域可填,且可出现多次;3) 1..1——数据元值域必填,且出现一次;4) 1..n——数据元值域必填,且可出现多次1.4.2.节点数据类型1)s=字符类型,例:s..60 字符串60个长度2)n=数值类型,例:n..18,4 数值包含小数点共18位,其中包含4位小数3)date=日期类型,全文要求日期格式为 yyyyMMddHHmmss1.4.3.相关数据详解1)时间字段:时间字段如无特殊说明,则格式为yyyyMMddHHmmss1.5.交易码列表1.5.1.基础功能注意:2.3.4.5 接口全部按照加密传输;加密格式为:{"data":"加密信息","signature":"签名"}加密信息:{"msg":"{"参数":"",......}"}1.6.接口信息说明1.6.1.注册商户接口请求报文:备注:普通HTTP POST交互,详见demo;推广码和下放商户标识必须填写下放资料里面对应的信息;响应报文1.6.2.下载密钥接口(tb_DownLoadKey) 请求报文响应报文1.6.3.验卡接口(tb_verifyInfo)请求报文响应报文1.6.4.二维码支付接口(tb_WeixinPay) 请求报文响应报文1.6.5.订单状态查询接口(tb_OrderConfirm) 请求报文响应报文1.6.6.交易回调通知返回信息注意:发送方式普通POST表单,request 接收;1.6.7.同步商户签约费率(xy_ChangeRate)请求报文响应报文1.7.返回码及描述1.8.对账文件1.8.1.对账文件说明服务器每日9:00—10:00生成前一日的对账文件,对账文件采用txt 的格式记录。
微信支付注册步骤、文档、项目应用、接收通知,返回通知、使用STOMP实现浏览器和服务器双工通信
微信⽀付注册步骤、⽂档、项⽬应⽤、接收通知,返回通知、使⽤STOMP实现浏览器和服务器双⼯通信注册微信⽀付的步骤第⼀步:注册公众号(类型须为:服务号)请根据营业执照类型选择以下主体注册:| | | | 。
第⼆步:认证公众号公众号认证后才可申请微信⽀付,认证费:300元/次。
第三步:提交资料申请微信⽀付登录公众平台,点击左侧菜单【微信⽀付】,开始填写资料等待审核,审核时间为1-5个⼯作⽇内。
第四步:开户成功,登录商户平台进⾏验证资料审核通过后,请登录联系⼈邮箱查收商户号和密码,并登录商户平台填写财付通备付⾦打的⼩额资⾦数额,完成账户验证。
第五步:在线签署协议本协议为线上电⼦协议,签署后⽅可进⾏交易及资⾦结算,签署完⽴即⽣效。
本课程已经提供好“传智播客”的微信⽀付账号,学员⽆需申请。
完成上述步骤,你可以得到调⽤API⽤到的账号和密钥appid:微信公众账号或开放平台APP的唯⼀标识 wx8397f8696b538317mch_id:商户号 1473426802key:商户密钥 T6m9iK73b0kn9g5v426MKfHQH7X8rKwb官⽅⽂档⽂档地址快速⼊门微信有多种⽀付⽅式,我们以最常⽤的本地⽀付统⼀下单(扫码为例)但微信封装了WXPay类,来封装请求过程,被封装的⽅法如下统⼀下单案例引⼊微信⽀付api,注意这个坐标在阿⾥和中央仓库都没有,需要我们⼿动安装sdk到本地仓库下载后解压打开,找到pom,修改⼀下编译版本要⾼于7<properties><project.build.sourceEncoding>utf-8</project.build.sourceEncoding><project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding><piler.source>8</piler.source><piler.target>8</piler.target></properties>然后执⾏在src同级⽬录打开cmd,执⾏mvn install然后在target中找到jar包,打开cmd,执⾏mvn install:install-file -DgroupId=com.github.wxpay -DartifactId=wxpay-sdk -Dversion=3.0.9 -Dpackaging=jar -Dfile=wxpay-sdk-3.0.9.jar然后就会安装到mvn仓库⾥<dependencies><dependency><groupId>com.github.wxpay</groupId><artifactId>wxpay-sdk</artifactId><version>3.0.9</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.24</version></dependency></dependencies>创建包com.github.wxpay.sdk,注意包名不能错包下创建⼀个MyConfig类⾥边的平台id商户id域名都需要企业资质来申请package com.github.wxpay.sdk;import java.io.InputStream;public class MyConfig extends WXPayConfig{//公众号或开放平台idString getAppID() {return "wx8397f8696b538317";}//商户idString getMchID() {return "1473426802";}//商户的密钥String getKey() {return "T6m9iK73b0kn9g5v426MKfHQH7X8rKwb";}//⽆需关⼼InputStream getCertStream() {return null;}//设置域名IWXPayDomain getWXPayDomain() {return new IWXPayDomain() { //接⼝的匿名内部类//⽆需关注public void report(String s, long l, Exception e) {}public DomainInfo getDomain(WXPayConfig wxPayConfig) {//参数1 域名当前为微信统⼀⽀付的域名,统⼀⽀付就填这个参数2 是否为主要域名return new DomainInfo("",true);}};}}创建⼀个测试类,这个测试类正式使⽤时应该写在serviceImpl⾥,并被controller调⽤package com.itheima.test;import com.github.wxpay.sdk.MyConfig;import com.github.wxpay.sdk.WXPay;import java.util.HashMap;import java.util.Map;public class PayTest {public static void main(String[] args) throws Exception {MyConfig myConfig = new MyConfig();WXPay wxPay = new WXPay(myConfig);//map中封装的是请求参数//对于appid平台id mchid商户id key商户密匙已经在MyConfig中配置完成,并在初始化wxPay时传⼊,⽆需再封装进map//请求参数中还要求传随机字符串、签名,⽤wxPay请求时⽆需我们⾃⼰⽣成Map<String,String> map = new HashMap();/*这些是必填的,更多参数参考官⽅⽂档body商品描述out_trade_no商户订单号total_fee总⾦额spbill_create_ip终端地址notify_url通知地址需要是⼀个可以访问的域名+接收消息的路径trade_type交易类型可选值JSAPI -JSAPI⽀付NATIVE -Native本地⽀付 APP -APP⽀付*/map.put("body","changou");map.put("out_trade_no","changou");map.put("total_fee","1");//这是1分钱map.put("spbill_create_ip","127.0.0.1"); //接收微信返回消息的域名+controller的路径如 /wxpay/notify /wxpay/notify是访问路径 是域名map.put("notify_url","");map.put("trade_type","NATIVE");/****/Map<String, String> result = wxPay.unifiedOrder(map);System.out.println(result);}}执⾏即可收获结果,其中的code_url就是⼆维码我们可以使⽤QRcode.js从前端显⽰⼆维码QRCode.js 是⼀个⽤于⽣成⼆维码的 JavaScript 库。
公众号支付商户接入指南(商户版)
实例网址填写:/wxpay/test.html(确保这个页面填写的时候可以访问) 功能域名为支付链接所在的目录,只能一个目录下有支付权限,配置到目录即可,不用精确到页面。 实例网址为配置当时,该目录下可以访问的一个正常链接页面,确保可以访问。
4.3 申请提交完成,等待审核
Step2: 设置登录帐号基本信息
Step3:邮箱激活 查收自己的注册邮箱,点击链接,激活帐号。
Step4:商户信息登记 选择自己对应的选项,进行信息登记。
Step5:公众号类型选择 确认选择公众号类型为【服务号】
Step6: 完善公众号信息
(申请提交后,经过 2-7 工作日可通过申请,期间请登录公众平台,查看审核结果信息。 )
公众号支付商户接入指南
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B.同时将收到微信发放的公众平台参数的邮件,包含 appid,appsecret,paysignkey 信息。如果长时间未收到邮件,请检查垃圾邮件,确认邮 件未被放进垃圾邮件。
邮件标题及发件人如下:
C.商户功能通过审核后,登录公众平台即到商户号信息后,登录财付通企业版缴纳保证金。需缴纳保证金商户,登陆后即可看见微信保证金缴纳弹层,点击【我要缴纳保证金】 链接即可直接缴纳 � 固定入口在【现金管理】--【微信保证金】
公众平台商户接入(微信支付)功能申请教程
公众平台商户接入(支付)功能申请教程一、申请前准备
1:登录支付商户平台
2:商户基本信息准备
3:开通支付功能
4:获取商户号
二、商户接入准备
1:接口协议及参数
1.1 接口协议说明
1.2 接口参数说明
2:接入流程
2.1 配置支付回调通知地址
2.2 签名
2.3 调用统一下单接口
2.4 处理支付结果通知
2.5 查询订单状态
2.6 申请退款
2.7 查询退款状态
2.8对账单
2.9资金账单
3:接入示例
3.1 H5网页支付
3.2 公众号支付
3.3 扫码支付
3.4 小程序支付
三、验收测试
1:验证接口安全性
2:验证支付功能是否正常
3:验证退款功能是否正常
4:验证对账单功能是否正常5:验证资金账单功能是否正常附件:本文档涉及附件
1:附件一、商户接入技术文档
2:附件二、接口示例代码
法律名词及注释:
1:商户号:在支付平台上唯一标识一个商户的编号。
2:接口协议:商户接入支付平台的接口规范及规定。
3:支付回调通知地址:用户支付成功后,支付平台通知商户
支付结果的地址。
4:统一下单接口:商户调用该接口预支付交易单。
5:签名:商户对接口参数进行签名,用于验证数据的完整性
和安全性。
6:支付结果通知:通知商户支付结果的回调信息。
7:申请退款:用户申请退款,商户调用该接口进行退款操作。
8:对账单:商户通过该接口每日成功支付的订单及退款订单
的对账单。
9:资金账单:商户通过该接口资金变动、提现等资金业务的
账单。
【微信支付】微信公众号支付接口文档V3.3.7
微信公众号支付接口文档(V3.3.7)目录微信公众号支付接口文档 (1)1.微信支付简介 (4)1.1.功能简介 (4)1.2.支付账户 (4)1.3.支付方式 (5)2.支付场景介绍 (5)2.1.网页内支付场景---JS API(网页内)支付接口 (5)2.1.1.交互细节 (7)2.1.2.JSAPI支付时序图 (8)2.1.3.获取当前微信版本号 (8)2.1.4.显示微信安全支付标题 (8)2.2.线下扫码购买场景---Native(原生)支付接口 (9)2.2.1使用场景 (9)2.2.2.Native(原生)支付URL定义 (10)3.接口说明 (12)3.1.接口调用规则 (12)3.2.Sign签名生成方法 (13)3.3.代码实例 (14)4.API说明 (15)4.1.统一支付接口 (15)4.2.通用通知接口 (17)4.3.订单查询接口 (19)4.4.JSAPI支付——H5网页端调起支付接口 (21)4.5.Native支付——二维码链接 (22)4.6.Native支付——请求商家获取商品信息接口 (23)4.7关闭订单接口 (24)4.8.退款申请接口 (25)4.9.退款查询接口 (26)4.10.对账单接口 (28)4.11.短链接转换接口 (30)4.12.接口调用上报接口 (31)5.企业红包使用说明 (32)5.1创建批次企业红包 (32)5.2提交支付使用企业红包 (33)5.3查询使用企业红包金额 (33)5.4企业红包对账单 (33)6.错误码列表 (33)7.常见问题和注意事项 (34)7.1.常见基本概念疑惑 (34)7.2.常见错误现象及解决方法 (34)7.3.常见注意事项 (35)7.4.联系我们 (36)1.微信支付简介1.1.功能简介微信支付,是基于微信客户端提供的支付服务功能。
同时向商户提供销售经营分析、账户和资金管理的功能支持。
用户通过扫描二维码、微信内打开商品页面购买等多种方式调起微信支付模块完成支付。
微信公众号支付接口文档(结算中心-受理机构)v0.0
微信公众号支付接口文档(结算中心-受理机构)讨论目录修改日志 (4)1.微信支付简介 (5)1.1.功能简介 (5)1.2.支付账户 (5)1.3.支付方式 (6)2.支付场景介绍 (6)2.1.网页内支付场景---JS API(网页内)支付接口 (6)2.1.1.交互细节 (8)2.1.2.JSAPI 支付时序图 (9)2.1.4.显示微信安全支付标题 (9)2.2.线下扫码购买场景---Native(原生)支付接口 (10)2.2.1 使用场景 (10)2.2.2.Native(原生)支付URL 定义 (11)3.接口说明 (13)3.1.接口调用规则 (13)3.2.微信Sign 签名生成方法 (14)3.2.1 受理商签名Sign 生成方法 (14)3.3 结算中心签名生成方法 (15)3.4 调用流程 (16)4.API 说明 (17)4.1.统一支付接口 (17)4.2.通用通知接口 (20)4.3.订单查询接口 (22)4.7 关闭订单接口 (24)4.8.退款申请接口 (26)4.9.退款查询接口 (28)4.10.对账单接口 (30)4.12.接口调用上报接口 (30)5.企业红包使用说明 (32)5.1 创建批次企业红包 (32)5.2 提交支付使用企业红包 (32)5.3 查询使用企业红包金额 (33)5.4 企业红包对账单 (33)6. 返回状态码列表 (33)7.错误码列表 (33)8.常见问题和注意事项 (34)8.1.常见基本概念疑惑 (34)8.2.常见错误现象及解决方法 (34)8.3.常见注意事项 (36)修改日志1.微信支付简介1.1.功能简介微信支付,是基于微信客户端提供的支付服务功能。
同时向商户提供销售经营分析、账户和资金管理的功能支持。
用户通过扫描二维码、微信内打开商品页面购买等多种方式调起微信支付模块完成支付。
微信支持公众号内支付,即基于公众号向用户收款,公众号相当于收款的商户。
【微信公众号支付】收货地址共享接口文档V1.4
收货地址共享接口文档V1.41 收货地址共享简介1.1 功能简介微信收货地址共享,是指用户在微信浏览器内打开商品H5 网页,填写过地址,后续支持快速选择免填写,也可增加和编辑。
此地址为用户属性,可在商户网页中共享使用。
支持原生控件填写地址,地址数据会传递到商户后台。
1.2 功能支持地址共享是基于微信JS API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。
同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。
以iPhone 版本为例,可以通过user agent可获取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206MicroMessenger/5.0"其中5.0 为用户安装的微信版本号,商户可以判定版本号是否高于或者等于5.0。
1.3 地址格式微信地址共享使用的数据字段包括:- 收货人姓名- 地区,省市区三级- 详细地址- 邮编- 联系电话其中,地区对应是国标三级地区码,如“广东省-广州市-天河区”,对应的是510630。
详情参考:HYPERLINK"/tjbz/xzqhdm/t20130118_402867249.html"2 公众号收货地址JS API 接口定义2.1 编辑并获取收货地址公众号编辑收货地址editAddress参数列表说明:addrSign 的生成规则如下。
参与addrSign 签名的字段包括:appId、url(当前网页url)、timestamp、noncestr、accessToken(用户授权凭证,请参照oauth2.0 协议获取)。
这里scope、signType 并不参与签名。
对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。
到处都是坑的微信支付V3
业务需要一个在微信上能付款的功能,于是乎想到了最普遍的支付宝,坑爹的是T与A是水火不容啊,默默的还是接微信支付吧,没想到从此掉进了连环坑……网上写微信支付接口的还是很多,PHP官方有(鄙视源码作者,连参数对应都错了,能跑通才怪),NET版微信支付--入门篇这篇算是比较全的,java版。
PHP的只能参考,终究还是先按NET版的还创建项目,不过文章里面也没具体写到如何前后台交互(偶用的MVC),对于初次接触的人来说只能问题来一个解决一个。
至于怎么从0开发就不用详细说明了,参考这位仁兄的微信支付--入门篇,微信支付V2版网上也有Demo,但V3与V2相差太大,以此就新版V3 碰到的问题来说明解决方法。
基础问题先排除:1.1.确保商户功能审核通过,会有官方邮件2.支付授权目录(注意看文档,大小写关系很大点击支付按钮,提示“access_denied”网上有很多关于此问题的解决)3.点击支付按钮,提示“access_not_allow” 需要将测试人的微信帐号加入白名单4.【在开发调试阶段,测试链接需要在公众号内点击打开白名单用户在公众号内向公众号发一条消息,消息内容即为测试链接,然后点击打开】文档中写得很清楚,但中招的人还是不计其数(偶也中了……)。
5.【参数大小写敏感】md5 运算后,字符串的字符要转换为大写,注意是MD5运算模块。
基本问题排除后,出问题最多的就是利用JSAPI 支付,提示“该公众号支付签名无效,无法发起该笔交易”,此问题搞了2天多,网上到处搜索,不停的对比文档,无耐欲哭无泪啊,“不要用wifi和用流量才不报错”的答案都有(没遇到过)基于园友提出的另一个问题”测试目录改为/后,网页支付时直接提示get_brand_wcpay_request:fail_invalidappid。
使用了其他的目录如/ 也毫无问题。
估计微信内部把含mall的支付都给屏蔽了。
“此问题还没亲自验证,不过在微信中还是请不要用关于阿里有关的域名,否则都不知道怎么坑死的。
2024版微信支付服务协议通用条款版
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX2024版支付服务协议通用条款版本合同目录一览1. 定义与解释1.1 定义1.2 解释2. 服务内容2.1 服务范围2.2 服务方式2.3 服务期限3. 用户义务3.1 遵守法律法规3.2 账户管理3.3 信息安全3.4 支付行为4. 支付安全保障4.1 安全责任4.2 安全措施4.3 安全事件处理5. 用户权益保障5.1 权益维护5.2 退款政策5.3 投诉与处理6. 费用与分成6.1 服务费用6.2 分润比例6.3 费用支付方式7. 数据与隐私保护7.1 数据使用7.2 隐私保护7.3 数据安全8. 合同的变更、解除与终止8.1 变更8.2 解除8.3 终止9. 违约责任9.1 违约行为9.2 违约责任9.3 免责条款10. 争议解决10.1 协商解决10.2 调解解决10.3 仲裁解决10.4 法律途径11. 法律适用与管辖11.1 法律适用11.2 管辖法院12. 其他条款12.1 通知与送达12.2 合同附件12.3 合同生效13. 附件13.1 支付服务协议13.2 支付服务指南13.3 支付安全指南14. 签署日期与地点14.1 签署日期14.2 签署地点第一部分:合同如下:第一条定义与解释1.1 定义(2)支付:指由乙方提供的,通过乙方平台实现的,甲方用户使用支付功能进行支付的业务。
(3)甲方:使用支付功能的用户,本协议签订时应具备完全民事行为能力。
(4)乙方:提供支付服务的公司,本协议签订时具备相应的法人资格。
1.2 解释本协议中的术语、专用名词,除非上下文另有明确规定,否则以其普通含义为准,除非本协议另有规定,否则本协议中的条款应具有相同的作用。
第二条服务内容2.1 服务范围2.2 服务方式乙方通过支付平台,向甲方用户提供支付服务。
甲方用户可通过绑定银行卡、开通快捷支付等方式,使用支付功能。
2.3 服务期限本协议有效期为____年,自双方签署之日起生效。
以JSAPI实现微信公众号的在线支付
办公自动化杂志1场景与需求1.1应用场景JSAPI 支付是用户在微信中打开商户的H5页面,或在微信公众号内进入商家公众号,打开某个消费Web 页面,点击相应的商品或服务的时候,商户在H5页面通过调用微信支付提供的JSAPI 接口,调起微信支付模块完成商品或服务的在线支付。
此种支付方式使用方式灵活,快捷,在公众号内应用广泛。
本文以一个特种作业在线考培平台的资源支付为例,阐述JS-API 在线支付设计与实现。
1.2功能需求文中的案例特种作业在线考培平台主要采用三层架构的框架体系,采用C#.net 语言开发,采用SQL server 作为后台数据库,平台具有手机端和PC 端使用界面,其中手机端界面嵌入到企业微信公众号内使用,平台主要提供特种作业人员在线学习、模拟的功能,特种作业主要分为建筑施工特种作业、特种设备作业两大类,其中建筑施工特种作业类每个工种的在线学习资源、特种设备作业类每个工种的在线学习资源的学习价格可以在后台自定义。
2设计与实现2.1数据库设计出于安全及系统交易记录的可追溯性,在数据中创建一个名为ht_orders 的表用于存储线上交易数据,在交易出现问题时,有追溯的依据。
表ht_orders 的数据字典见表1。
表1后台数据库中存储交易记录的表结构2.2支付业务逻辑以在线考培平台建筑施工特种作业的施工升降机操作工为例进行说明,学员关注平台公众号,进入学习注册页面,完善学员的个人信息,个人信息包括学员身份证号码、手机号码,通过DropDownList 下拉列表框选择自己学习的工种(如:建筑施工升降机操作工等),点击注册按钮,学员填写的身份证号、手机号采用正则表达式的方式进行验证,验证通过后,弹出支付界面,学员进行支付,否则,将返回学员信息填写页面。
根据支付结果的返回值进行判断,如果支付成功,将学员的个人信息写入数据库,学员可以用其个人的身份证号码登录进行在线资源的使用,同时将交易记录的相关数据写入表ht_orders 中。
扫码支付API接口说明文档
扫码支付API接口开发指南商户接口规版本(3.0.7)修订时间:2017-08-01目录第一章文档描述31、文档说明32、阅读对象33、名词定义3第二章接口定义41、扫码支付42、公众号支付43、支付异步通知104、交易查询125、对账查询14第三章签名说明161、签名算法162、密钥生产16附录1错误码说明17第一章文档描述1、文档说明本说明文档用于指导商户接入扫码支付API系统进行的对接,目前支持支付宝、微信扫码。
请相关技术人员详细阅读本文档。
2、阅读对象商户开发人员。
扫码支付API接口相关技术人员。
3、名词定义合作方:指对接扫码支付平台的机构。
商户:指委托收单的营业机构,如超市、便利店等。
用户:指在商户系统进行消费的企业或者个人。
商户ID:指支付系统为使用外部接入接口的商户统一分配的唯一标识。
商户密钥:指商户在和支付系统进行数据签名认证的密钥,采用RSA加密算法。
第二章接口定义1、扫码支付1、接入URL:118.178.126.35:8088/payservice/pay/smzf2、接入方式:POST方式均可3、请求协议参数:4、返回协议参数:5、接请求提交方法:入{"payType": "ZFBZF","orderId": "WE1124567810","merchantCode": "","totalAmount": "2","subject": "first test","desc": "test product","body": "test product","terminalId": "1213412134","extend1": "test","notifyurl": "118.178.126.35:8088/payservice/pay/notifytestsucc","createip": "192.168.0.1"}返回值:{"rspCode": "000000","rspMsg": "OK","qrCode": "https: //qr.alipay./bax02559bawzwz2erezj00d4","sign":"Ek7H4c6f5OgechohLFrxcgPoGC/vVy0Bg5XDzYGVIReHYaFtEBfSUxhSxCf/rDMhM+DZKJaw5jhT U1mE1ijEQoguj6c6gKDSg6fXuEEwbKODlQDW9cHRFxMVki2THexox/g8KgipUiEW5HOdNNm4Lc wQe8YC+8gauHcKEXSW7Rw="}2、公众号支付1、接入URL:118.178.126.35:8088/payservice/pay/pn2、接入方式:POST方式均可3、请求协议参数:4、返回协议参数:5、接请求提交方法:入{"payType": "ZFBZF","orderId": "WE1124567810","merchantCode": "","totalAmount": "2","subject": "first test","body": "test product","terminalId": "1213412134","extend1": "test","notifyurl": "118.178.126.35:8088/payservice/pay/notifytestsucc","createip": "192.168.0.1"" callbackUrl ": " 118.178.126.35:8088/payservice/pay/callbackurl"" subAppId ": " wxa3dbb6050f553164 "" subOpenId ": "9efi3dbb6050f653164 "}返回值:{"rspCode": "000000","rspMsg": "OK","payCode":{"timeStamp":"74","signType":"MD5","package":"prepay_id=wx2657a0","paySign":"6B0EEA6AE668593A6A290F8247CE46B7","nonceStr":"05571626a6f6415f8cb11c91e64b8450","appId":"wxa3dbb6050f353164"},"sign":"Ek7H4c6f5OgechohLFrxcgPoGC/vVy0Bg5XDzYGVIReHYaFtEBfSUxhSxCf/rDMhM+DZKJaw5jhT U1mE1ijEQoguj6c6gKDSg6fXuEEwbKODlQDW9cHRFxMVki2THexox/g8KgipUiEW5HOdNNm4Lc wQe8YC+8gauHcKEXSW7Rw="}3、支付异步通知1、接入URL:过程1 中请求参数notifyurl值2、接入方式:POST 方式3、通知请求协议参数:4、返回协议参数:5、接入实例:请求提交方法:{"orderid": "WE1124567810","merchantid": "","totalAmount": "2","payTime": "433"," trade_state": "SUCCESS","transcation_id": "BJ55124",}返回值:{"rspCode": "000000","rspMsg": "OK","sign":"Ek7H4c6f5OgechohLFrxcgPoGC/vVy0Bg5XDzYGVIReHYaFtEBfSUxhSxCf/rDMhM+DZKJaw5jhT U1mE1ijEQoguj6c6gKDSg6fXuEEwbKODlQDW9cHRFxMVki2THexox/g8KgipUiEW5HOdNNm4Lc wQe8YC+8gauHcKEXSW7Rw="}6、特别说明:①支付异步通知过程在整个支付流程中一定存在。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微信公众号支付接口文档(V3.3.7)目录微信公众号支付接口文档 (1)1.微信支付简介 (4)1.1.功能简介 (4)1.2.支付账户 (4)1.3.支付方式 (5)2.支付场景介绍 (5)2.1.网页内支付场景---JS API(网页内)支付接口 (5)2.1.1.交互细节 (7)2.1.2.JSAPI支付时序图 (8)2.1.3.获取当前微信版本号 (8)2.1.4.显示微信安全支付标题 (8)2.2.线下扫码购买场景---Native(原生)支付接口 (9)2.2.1使用场景 (9)2.2.2.Native(原生)支付URL定义 (10)3.接口说明 (12)3.1.接口调用规则 (12)3.2.Sign签名生成方法 (13)3.3.代码实例 (14)4.API说明 (15)4.1.统一支付接口 (15)4.2.通用通知接口 (17)4.3.订单查询接口 (19)4.4.JSAPI支付——H5网页端调起支付接口 (21)4.5.Native支付——二维码链接 (22)4.6.Native支付——请求商家获取商品信息接口 (23)4.7关闭订单接口 (24)4.8.退款申请接口 (25)4.9.退款查询接口 (26)4.10.对账单接口 (28)4.11.短链接转换接口 (30)4.12.接口调用上报接口 (31)5.企业红包使用说明 (32)5.1创建批次企业红包 (32)5.2提交支付使用企业红包 (33)5.3查询使用企业红包金额 (33)5.4企业红包对账单 (33)6.错误码列表 (33)7.常见问题和注意事项 (34)7.1.常见基本概念疑惑 (34)7.2.常见错误现象及解决方法 (34)7.3.常见注意事项 (35)7.4.联系我们 (36)1.微信支付简介1.1.功能简介微信支付,是基于微信客户端提供的支付服务功能。
同时向商户提供销售经营分析、账户和资金管理的功能支持。
用户通过扫描二维码、微信内打开商品页面购买等多种方式调起微信支付模块完成支付。
微信支持公众号内支付,即基于公众号向用户收款,公众号相当于收款的商户。
其中支付方式,可以分为JS API(网页内)支付、Native(原生)支付。
商户可以结合业务场景,自主选择支付方式。
本文将全面介绍微信支付的技术方案。
1.2.支付账户商户向微信提交企业以及银行账户资料,商户功能审核通过后,可以获得以下帐户(包含财付通的商户账户),用于公众号支付。
帐号作用appId微信公众号身份的唯一标识。
审核通过后,在微信发送的邮件中查看。
Mchid商户ID,身份标识,在微信发送的邮件中查看。
Key商户支付密钥Key。
登录微信商户后台,进入栏目【账户设置】【密码安全】【API安全】【API密钥】,进入设置API密钥。
AppsecretJSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看。
注意:支付密钥Key是验证商户唯一性的安全标识,请妥善保管,仅保留在第三方后台和微信后台,不会在网络中传播。
1.3.支付方式JS API(网页内)支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付。
商户网页前端通过使用微信提供的JS API,调用微信支付模块。
这种方式,适合需要在商户网页进行选购下单的购买流程。
Native(原生)支付:是指商户组成符合Native(原生)支付规则的URL链接,用户可通过在会话中点击链接或者扫描对应的二维码直接进入微信支付模块(客户端界面),即可进行支付。
这种方式,适合无需选购直接支付的购买流程。
跟JSAPI最大的区别是不经过网页调起支付。
2.支付场景介绍2.1.网页内支付场景---JS API(网页内)支付接口商户已有H5商城网站,在微信内打开网页时,可以调用微信支付完成下单购买的流程。
步骤(1):左图,商户下发图文消息或者通过自定义菜单吸引用户点击进入商户网页。
步骤(2):右图,进入家网页,用户选择购买,完成选购流程。
步骤(3):左图,调起微信支付控件,用户开始输入支付密码。
步骤(4):右图,密码验证通过,支付成功。
商户后台得到支付成功的通知。
步骤(5):左图,返回商户页面,显示购买成功。
该页面由商户自定义。
步骤(6):右图,公众号下发消息,提示发货成功。
该步骤可选。
注意:商户也可以把商品网页的链接生成二维码,用户扫一扫打开后即可完成购买支付。
2.1.1.交互细节以下是支付场景的交互细节,请认真阅读,并设计商户页面的逻辑:(1)用户打开商户网页选购商品,发起支付,在网页通过JavaScript 调用getBrandWCPayRequest 接口,发起微信支付请求,用户进入支付流程。
(2)用户成功支付点击完成按钮后,商户的前端会收到JavaScript 的返回值。
商户可直接跳转到支付成功的静态页面进行展示。
(3)商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。
注:(2)和(3)的触发不保证遵循严格的时序。
JS API 返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。
JS API 返回值目前只在支付成功时返回,后续版本将扩展返回值,以便商户做更多个性化的展示。
2.1.2.JSAPI支付时序图2.1.3.获取当前微信版本号由于微信5.0版本后才加入微信支付模块,低版本用户调用微信支付功能将无效。
因此,建议商户通过user agent来确定用户当前的版本号后再调用支付接口。
以iPhone版本为例,可以通过user agent可获取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X) AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206 MicroMessenger/5.0"其中5.0为用户安装的微信版本号,商户可以判定版本号是否高于或者等于5.0。
2.1.4.显示微信安全支付标题对于商户具有支付权限且需要调用微信支付的页面,为了让用户增加购买信心,确认交易环境安全,微信强烈建议商户使用“微信安全支付”标题。
安全支付标题的如下图。
显示支付安全标题,需将原始链接添加上"showwxpaytitle=1"的尾串。
通过这种方式,商户的页面将出现微信安全支付的标识。
例如,原始URL 为:htp://,显示安全支付标题的URL 为:htp://?showwxpaytitle=1。
当用户在微信里打开 不会直接出现微信安全支付的标题,而打开htp://?showwxpaytitle=1后将出现微信安全支付标题。
2.2.线下扫码购买场景---Native (原生)支付接口2.2.1使用场景与网页内支付场景不同,部分商户不需要经过网页选购,可以直接下单购买。
步骤(1):左图,商户根据微信支付的规则,为不同商品生成不同的二维码,张贴在各种场景,便于用户扫描购买。
步骤(2):右图,用户使用微信扫描二维码后,获取商品信息,同时到商户后台下单。
步骤(3):左图,用户开始支付,输入支付密码。
步骤(4):右图,支付成功,商户后台得到通知,进行发货处理。
2.2.2.Native(原生)支付URL定义模式一:商户按固定格式生成链接二维码,用户扫码后调微信会将productid和用户openid发送到商户设置的链接上,商户收到请求生成订单,调用统一支付接口下单提交到微信,微信会返回给商户prepayid,时序图如下:对应链接:weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id= XXXXXX &time_stamp=XXXXXX&nonce_str=XXXXX模式二:商户生成订单,先调用统一支付接口获取到code_url,此URL直接生成二维码,用户扫码后调起支付。
时序图如下:code_url对应链接:weixin://wxpay/bizpayurl?sr=XXXXX3.接口说明3.1.接口调用规则◆认证方式:HTTPS认证,退款和冲正接口调用需要商户证书(证书在审核邮件附件中)◆请求采用POST方式◆提交和返回结果采用XML格式◆字符集默认使用UTF-8,请勿使用其它字符集◆商户与微信之间的交互(特别是Native回调和支付通知回调),都需要验证签名处理返回时先判断协议返回错误码,再判断业务返回错误码,最后判断交易状态3.2.Sign签名生成方法微信支付中将对数据里面的内容进行鉴权,确定携带的信息是真实、有效、合理的。
因此,这里将定义生成sign字符串的方法。
a.对所有传入参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1,注意:值为空的参数不参与签名;b.在string1最后拼接上key=Key(商户支付密钥)得到stringSignTemp字符串,并对stringSignTemp进行md5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
下面定义了一段生成sign字符串的示范过程:假设以下为package传入参数:appid=wxd930ea5d5a258f4fauth_code=123456body=testdevice_info=123mch_id=1900000109nonce_str=960f228109051b9969f76c82bde183acout_trade_no=1400755861spbill_create_ip=127.0.0.1total_fee=1key=8934e7d15453e97507ef794cf7b0519di:经过a过程URL键值对字典序排序后的字符串string1为:appid=wxd930ea5d5a258f4f&auth_code=123456&body=test&device_info=123&mch_id=1 900000109&nonce_str=960f228109051b9969f76c82bde183ac&out_trade_no=1400755861&spbil l_create_ip=127.0.0.1&total_fee=1ii:经过b过程后得到sign为:sign=md5(string1&key=8934e7d15453e97507ef794cf7b0519d).toUpperCase=md5(appid=wxd930ea5d5a258f4f&auth_code=123456&body=test&device_info=123&mch_id=1900000109&nonce_str=960f228109051b9969f76c82bde183ac&out_trade_no=1400755861 &spbill_create_ip=127.0.0.1&total_fee=1&key=8934e7d15453e97507ef794cf7b0519d).toUpper Case()="c380bec2bfd727a4b6845133519f3ad6".toUpperCase()="C380BEC2BFD727A4B6845133519F3AD6"3.3.代码实例接口调用实例,以开发为例说明数据提交和返回的具体格式:提交数据:<xml><appid>wx2421b1c4370ec43b</appid><attach><![CDATA[att1]]></attach><body><![CDATA[JSAPI支付测试]]></body><device_info>1000</device_info><mch_id>10000100</mch_id><nonce_str>b927722419c52622651a871d1d9ed8b2</nonce_str><notify_url>/pub_v2/pay/notify.php</notify_url><out_trade_no>1405713376</out_trade_no><spbill_create_ip>127.0.0.1</spbill_create_ip><total_fee>1</total_fee><trade_type>JSAPI</trade_type><sign><![CDATA[3CA89B5870F944736C657979192E1CF4]]></sign></xml>协议级错误返回:<xml><return_code><![CDATA[FAIL ]]></return_code><return_msg><![CDA TA[SYSERR]]></return_msg></xml>正确返回数据:<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDA TA[OK]]></return_msg><appid><![CDA TA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><device_info><![CDATA[1000]]></device_info><nonce_str><![CDA TA[FvYSnPuFFPkAr77M]]></nonce_str><sign><![CDATA[63238039D6E43634297CF2A6EB5F3B72]]></sign><result_code><![CDA TA[SUCCESS]]></result_code><openid><![CDATA[oUpF8uN95-Ptaags6E_roPHg7AG0]]></openid><is_subscribe><![CDATA[Y]]></is_subscribe><trade_type><![CDATA[JSAPI]]></trade_type><bank_type><![CDATA[CCB_CREDIT]]></bank_type><total_fee>1</total_fee><coupon_fee>0</coupon_fee><fee_type><![CDATA[CNY]]></fee_type><transaction_id><![CDATA[1008450740201407220000058756]]></transaction_id><out_trade_no><![CDA TA[1406033828]]></out_trade_no><attach><![CDATA[att]]></attach><time_end><![CDATA[20140722160655]]></time_end></xml>业务级错误返回:<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDA TA[OK]]></return_msg><appid><![CDA TA[wx2421b1c4370ec43b]]></appid><mch_id><![CDATA[10000100]]></mch_id><device_info><![CDATA[1000]]></device_info><nonce_str><![CDA TA[sthBJ9QyUG6vkrjJ]]></nonce_str><sign><![CDATA[6277A96D7875D4FF23AA7B6A4C3046AB]]></sign><result_code><![CDA TA[FAIL]]></result_code><err_code><![CDATA[PAYERROR]]></err_code><err_code_des><![CDATA[支付错误]]></err_code_des></xml>4.API说明4.1.统一支付接口URL地址:https:///pay/unifiedorder统一支付接口,可接受JSAPI/NATIVE/APP下预支付订单,返回预支付订单号。