公众号退款不需要开通权限。
请按照以下几点检查:
1、配置授权,测试目录的时候地址的大小写需和代码里保持一致
2、一个是支付授权目录的配置,一个是生成签名时用timeStamp,前端js用timestamp
3、支付目录请勿配到二级或三级是,需配到最后一级
4、引用微信js
5、开发者中心-网页授权获取用户基本信息-js安全域名
6、微信授权域名和微信支付域名设置的不一样
举例:一个有www一个没有。
7、支付目录,指的是付款页面目录,不是后台支付链接目录。
超时的支付订单本身就无法进行支付,只有重新下单后才能正常进行支付
**JSAPI支付**:商户已有H5商城网站,用户通过消息或扫描二维码在微信内置浏览器打开网页时,可以调用微信支付完成下单购买的流程
**小程序支付**:商户已有微信小程序,用户通过好友分享或扫描二维码在微信内打开小程序时,可以调用微信支付完成下单购买的流程
**特别说明**:以上两种支付方式的下单接口是一样的
JSAPI:商户已有H5商城网站,用户通过消息或扫描二维码在**微信内**打开网页时,可以调用微信支付完成下单购买的流程
H5:H5支付是指商户在**微信客户端外**的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付,主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付
进一步解释说明:JSAPI要求微信浏览器;H5可以在外部浏览器进行操作只是支付的时候要拉起微信客户端
在微信内部进行支付请对接JSAPI支付接口,商户APP内支付请对接APP支付接口
是的,下单完成后 需要调起支付,具体请参考JSAPI调起支付API指引文档内容
商户可以通过调用“查询订单接口”的“用户标识”参数,即openid来查询某个具体用户。
prepay_id没有超过2小时有效期,可继续用来调起支付。超过2小时,可以原参重入获取新的prepay_id后调起支付。
报错原因:重复支付的提醒。温馨提示:请提醒用户,如果没有重复支付,点确认继续支付即可。
重复支付判断规则:
1、1分钟内同一用户在同商户, 同金额,没有正常处理回调或查单,判断为重复支付。
2、机构模式下以同一个sub_mch_id为维度判断;直连商户模式以同一个mchid为维度判断,具体弹窗提示策略如下:
A、1分钟内,下单商户相同,下单金额相同,会有弹窗提示。
B、1分钟内,下单商户相同,下单金额不同,不会弹窗提示。
C、1分钟内,下单商户不同,下单金额相同,不会弹窗提示。
D、1分钟内,下单商户不同,下单金额不同,不会弹窗提示。
报错原因:应监管要求,可疑用户不允许在跨境商户上消费。
请按照以下几点检查:
1、勿在模拟器中实行发起支付,请在真机发起
2、微信公众号支付授权目录填写实际发起支付的url地址
举例:
页面:http://www.newfms.com/order/pay/id-115
此处填:http://www.newfms.com/order/pay/
请根据以下几点排查问题:
1、package参数格式错误,package参数格式为package:"prepay_id=wx201410272009395522657a690389285100"。
2、package参数没有获取,返回null。
3、请检查预支付会话标识prepay_id是否已失效。
4、请求的appid与下单接口的appid是否一致。
5、微信支付金额为“分”不能有小数点。
6、预支付ID为空。
a、金额为空。
b、订单编号重复。
c、订单编号为空。
请根据以下几点排查:
1、通过JSSDK的方法拉起收银台,点击[详情]获取《JS-SDK说明文档》
2、参考以上文档内容检查代码
3、是否正确引入JS文件(温馨提示:如果第一个js引入无法成功的情况下,请引入第二个)。
4、使用内置对象方法,检查是否在微信里调起。
5、如按上述操作排查过,依旧无效,请检查是否为本地环境问题。
请按照以下几点进行排查:
1、统一下单接口中上传的appid与调起微信客户端进行支付的appid不一致。
2、调起微信客户端进行支付的必要参数prepayid有误或者prepayid已经过期(有效期2小时)。
出现以上报错,请联系对接运营人员开通支付权限。
请按照以下几点进行排查:
1、检查对应的支付页面是否有做config接口注入权限验证。
2、检查调起支付时的传参是否与文档要求一致。如timeStamp是否为String类型(php默认生成的时间戳是int类型)。
请通过以下几个步骤排查问题:
1、核对下单参数必填项是否遗漏。
2、核对传入参数与文档是否保持一致。
3、postman中请求测试,如果postman测试成功,打印最终的参数与postman的参数进行对比,注意空格。
4、同一商户订单号请使用同一微信号发起支付,请勿中途更换微信号,如更换微信号支付,则会出现“商家订单信息有误”报错,且无法解决。
**特别说明**
上述字段说明可通用于APP支付、Native支付、小程序支付、合单支付、H5支付方式。
**报错原因**:公众号获取openid接口报的错误。
请检查appid对应的[公众号后台](mp.weixin.qq.com)是否配置的授权域名和获取openid的域名一致。
授权域名配置路径:公众平台--设置--公众号设置--功能设置--网页授权域名。
请检查商户号是否使用正确
微信内部浏览器打开网页支付时,使用JSAPI支付;微信外部浏览器打开网页支付时,使用H5支付。
V3和V2接口可以混合,首先需要确保商户API证书已经升级成权威CA颁发的证书,请按照V3和 V2的接口文档进行接入,两者互不影响,只是两套接口都会调用同一个权威CA颁发的商户API证书,其次调用对应接口时,应按照使用的版本对应的接口规则调用。
【注意事项】
1、如果证书不是由权威CA颁发的证书,请先升级API证书。
2、升级为权威CA颁发的API证书后,微信支付颁发的API证书(原APIV2使用的商户API证书)将在14天后失效。需要技术人员尽快用新证书替换服务器上的老证书。
3、注意:下单接口,查单接口以及调起支付接口需使用同一版本,比如JSAPI下单使用v2版本,则JSAPI调起支付需要使用v2版本,且签名规格必须一致,如申请退款等接口则可以使用v3接口,但必须按照v3接口规则进行调用。
重复接收到回调通知请参考以下内容排查:
1、网络抖动等导致的多次回调,该情况属于正常情况,商户系统必须能够正确处理重复的通知。
2、商户应答不规范或超时,该情况微信会判定本次通知失败,重新发送通知,直到成功为止。商户需要按照以下说明做规范应答。规范应答说明:V3接口支付结果通知商户侧应答需以响应状态码204或者200为应答成功,而非文档里的code message 为准,应答成功后则不会再发生回调通知;处理异常时,应答的HTTP状态码应为500,或者4xx,应答异常后则会继续发送回调通知,直到商户应答成功或达到通知频率。
商户实际的支付目录必须和在微信支付商户平台设置的一致,否则会报错“当前页面的URL未注册”支付授权目录设置路径:登录【微信支付商户平台—>Development configuration】,设置后一般5分钟内生效。
如果未能解决,请按照以下几点检查:
1、支付授权目录设置错误,比如统一下单用A商户号下单,却把支付授权目录设置到B商户号的商户平台。
2、最多只能设置5个授权目录,如果需要设置多个子级目录,可以直接设置父级目录,比如需要同时设置“https://pay.weixin.qq.com/wiki/”和
“https://pay.weixin.qq.com/app/”。
那么可以直接设置“https://pay.weixin.qq.com/”。
3、目录严格区分大小写,且头部需要包含http或https,以左斜杠“/”结尾。
4、授权目录不能设置为IP形式,例如:“https://8.8.8.8/test”。
5、假设“https://www.weixin.com/pay.php”是商户最后页面所在的地址,则授权目录需要配置成“https://www.weixin.com/”。
报错原因:同一个商户号下,一个订单号下单成功后,不支持修改参数后再次重复提交,需保持原参数重录
举例:一个订单号在JSAPI支付接口下单成功后,无法在APP支付接口再进行下单
解决方案:请核实商户订单号是否重复提交。
V2接口回调格式为xml,V3接口回调格式为JSON
可以根据回调信息解密后的appid参数来判断即可。
回调接口bank_type字段参数必返回。
不一样,使用不同支付场景载体所用的APPID不一样。目前JSAPI支付只能使用公众号(服务号)的APPID,APP支付用APP的APPID。
不行,会提示重复支付。
可以选择验签或者不验签,验签是为了确保消息来自微信。为保证数据安全,建议商户对接口返回的信息进行验签。需要解密的接口在接口文档有提。
下单时传递了正确的回调地址,商户则可以通过回调地址正常接收到回调信息并查看。
不支持在微信内部和外部浏览器同时调起使用,请使用对应的下单支付接口调起支付。
"情况1:调用关单接口成功后,查询该订单,交易状态就会显示返回CLOSED:已关闭。
情况2:订单下单成功后15天内未进行支付会被默认关单。
温馨提示:订单为未支付状态下才能调用关单接口"
不可以,V3只支持非对称秘钥SHA256-RSA。
不会重复,微信支付订单号定义:即为微信支付系统生成的订单号,且具有唯一属性。
是的,支付失败是明确的终态,用户就无法支付了。
不可以,如不携带notify_url则无法正常接收回调通知
会的,订单下单成功后,14天内若没有支付,则会自动变成关闭状态
未成功支付订单和未关闭订单才支持同一个outTradeNo多次生成prepayid
除开提示支付超时的情况 在没有支付成功的情况下可以继续拉起支付。
-[[基础支付接口下,订单的有效期说明]]
**更多关于:[[标准问题| 微信支付参数解释常见问题]]**
为了防止重复支付可以调用关闭订单,只要是未支付的订单建议商户调用关单接口,关闭了订单之后不能再对该订单号进行统一下单。
只需要在调用下单接口时传递正确的回调地址,不需要额外配置。
新接入的商户推荐使用V3版本,V3相较于V2会更简单、一致且易用。
V2已经暂停更新,目前还可以使用,具体下线时间请持续关注最新官网文档。
V2和V3可以并存,首先需要确保商户API证书已经升级成权威CA颁发的商户API证书。然后请按照V2和V3的接口文档进行接入,两者互不影响,只是两套接口都会调用同一个权威CA颁发的商户API证书。
温馨提示:
1、如果证书不是由权威CA颁发的商户API证书,请先升级API证书。
2、升级为权威CA颁发的商户API证书后,微信支付颁发的商户API证书(原V2使用的商户API证书)将在14天后失效。需要技术人员尽快用新证书替换服务器上的老证书。
3、V3接口规则与V2不同,v3的接口规则说明请参考。
不支持,JSAPI下单请使用公众号APPID
回调信息的内容可从回调地址中获取。
V2接口是以post方式发送xml格式字符串的数据流。
V3接口是以post方式发送json格式字符串的数据流。
V2接口:请点击[详情1]查看对应内容。
V3接口:请点击[详情2]查看对应内容。
注意:目前官方暂未提供对应的示例代码
**温馨提示**:
新接入的商户推荐使用v3版本,V3相较于V2会更简单、一致且易用。
v2已经暂停更新,目前还可以使用,具体下线时间请持续关注最新官网文档
-[[微信支付的API接口文档链接]]
-[[APIV2和APIV3接口区别]]
-[[微信支付SDK接口文档]]
**更多关于:[[标准问题|微信支付回调常见问题]]**
下单接口的notify_url是回调通知地址,用于接收支付成功后的异步回调通知,并非用户支付成功后前端页面的跳转地址。
不是的,用户在使用微信支付时直接把微信关掉和支付失败都是未支付状态
支付结果通知的状态只有支付成功,不会出现PAYERROR
是的。时间戳设置请按标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数来进行设置。
注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。
示例值:1414561699。
同一笔订单的通知ID是一样的
无法操作,因为openid是用户在每个appid的唯一标识且每个appid都是不同的。
相同订单号在下单后如果没有调起支付,是允许原参数重录。
支付成功的订单,微信上可实时查看。
是的,回调通知的数据是放在请求体里面。
是的,attach附加数据可作为自定义参数使用,在查询API和支付通知中原样返回
机构模式下,请求头都是使用机构的信息。
是的,openid必须要服务接口层自行处理
不能,请严格按照文档接口规则编写对应的代码
机构模式:
有两个参数标识用户身份(二选一)
1、填写sp_openid时:使用机构的appid(sp_appid字段)对应获取的openid
2、填写sub_openid时:使用子商户的appid(sub_appid字段)对应获取的openid
**直连模式**:
只有一个参数标识用户身份:
使用直连商户的appid(appid字段)对应获取的openid。
目前微信支付下单只支持填写一个回调地址。
请根据以下几点排查:
1、检查商户号和appid使用是否正确。
2、检查请求地址是否调用错误,接口适用对象是否与商户号类型匹配。
3、使用相同参数,稍后重新调用。
4、请检查请求头当中Authorization的商户API证书序列号跟请求头的商户号是否匹配。
支付通知应答成功只会通知一次,应答失败才会反复通知支付通知“请点击”。
默认只支持80端口。
跟域名级别无关,但是必须是可访问到的域名。
微信支付订单号目前有两种获取方式:
1.通过查询订单接口,返回参数获取微信支付订单号。
2.通过回调返回获取微信支付订单号。
特别提醒:
1.只有成功支付的订单,才有微信支付订单号。
2.只有支付成功后,才有对应的回调通知。
支付回调地址在下单接口的notify_url字段中传入需要的地址即可。
微信支付返回的支付通知中没有unioni。
回调通知是发送给商户下单时传递的回调地址,商户下单填写的是哪个地址,就发送给哪个地址。
注意:一个订单只能传递一个地址。
不可以修改,需要用新单号重新下单。
一个订单号只能支付一次,无法重复支付成功。
支付超时会出现在拉起收银台后长时间没有输入密码进行支付场景下,提示支付超时,用户是无法再次拉起支付。
支付成功后会有结果通知或通过查询订单进行查询。
特别说明:只有支付成功后,才会有结果通知
mchid传发起接口请求的商户号;机构模式传机构的商户号;直连模式传直连商户号。
下单的订单金额参数不能为0 。
一般情况下,以prepayid的失效时间为准,默认为两小时,超过两小时需重新下单获取prepayid。
特别说明:
1、V2和V3接口通用以上规则。
2、Native支付默认订单有效期时间为2小时,超过2小时后需重新下单获取。
3、H5支付默认订单有效期时间为5分钟,超过5分钟后需重新下单获取。
最短失效时间间隔需要大于1分钟
可以包含小写英文字母。
原因:订单的截止时间目前只保证订单不会被支付,但不会保证状态的扭转。
解决方案:如果需要保证订单不被支付,可以通过关单的方式。
请按照以下两点检查:
1、请检查package参数格式是否错误。
package正确格式为package:""prepay_id=wx201612032137789b201de80e0661234657""。
2、请检查package参数是否成功传递给接口,传递为空也会导致该错误。
报错原因:统一下单的openid和调起支付的openid 不一致。
解决方案:传入的openid需要实时获取。
最直接的方式是获取支付用户的openid和调起支付的 openid 对比,看是否一样,不一样则会在微信支付界面出现上面的错误提示。
报错原因:代码未请求成功。
特别说明:prepay_id正常情况下,不会为空。
请根据以下几点排查:
1、调用统一下单支付接口交易类型参数(trade_type)填写错误。
2、填写规则:
公众号、小程序支付填写JSAPI
扫码支付填写NATIVE
APP支付填写APP
H5支付填写MWEB
请按照以下几点排查:
1、授权目录 ,支付授权目录是网站发起请求的页面所在目录,必须是能通过url地址访问的(与真实物理目录路径无关)。
(温馨提示:注意目录在注册填写时,需要精确到最细一级的且使用名称后直接加文件名,不可再增加 or删减目录)
2、网页授权,当开发者使用微支付的""JS API”支付时,这种支付需要网页授权,先获取code,再拿code去获取openid和prepay_id。
网页授权需要登录【微信公众平台】点击【左侧菜单】--【开发者中心】在右侧【接口权限列表】中找到【网页账号】点击最右侧的【修改】把测试的域名写进去,不要加http。
3、网页获取用户基本信息(位置:【微信公众号】-【开发者中心】) 网页获取用户基本信息,这个可能性最大,网页获取用户基本信息中的域名没有填写或填写错误,确保相应的参数设置没有错误情况。
具体操作:【微信公众号】-【开发者中心】-【网页授权】获取【用户基本信息】-【修改】-【填写域名】(不带www及/)
4、链接地址不存在,在微信端点击相应的按钮。
如果是出现链接地址不存在,或者配置错误也会出现这个问题,在配置内部链接网址的、目录的时候,要准确,检查、重新设置链接。
5、JS接口安全域名没有填写 点击【公众号设置】-【功能设置】点击【JS接口安全域名】后面的设置-第一行填写【域名】-【保存】
6、代码错误,请按照开发文档,检查代码。
7、路径错误 微信公众号后台的功能设置及开者设置方面,不确定自己填写的URL,请向开发者或者服务商确认再填写。
如:【支付路径】【回调路径】等。
1、请商户先检查回调信息携带的微信支付平台证书序列号与商户所持有的的微信支付平台证书序列号是否一致,如果不一致,请重新获取微信支付平台证书。
2、检查构造验签名串是否按照文档要求处理。
3、检查回调信息是否完整,顺序是否发生改变。
1、异步接收微信结果通知回调地址,通知url必须为外网可访问的url。
2、不能携带任何参数。
3、公网域名必须为https,现使用http域名能正常接收回调的用户,建议更换https,避免后期出现回调通知无法接收的情况。
4、不支持携带端口号。
回调通知太慢/延迟请参考以下几点排查:
1、回调地址是默认端口,不要自定义端口。
2、在处理回调的服务器之前,是否有nginx之类分发,转发,防火墙之类的。
3、检查CPU内存情况。
4、支付回调正常不会出现延迟,如出现延迟请自行检查网络环境是否存在问题。
Customer Service Tel
Business Development
9:00-18:00
Monday-Friday GMT+8
Technical Support
WeChat Pay Global
ICP证