- 微信支付单品代金券,支付时无法使用。全场代金券是正常的,请教是什么问题?
按照开发文档,传入detail字段值,version,实际在下单时不调起优惠 环境:小程序后台服务调起统一下单接口,https://api.mch.weixin.qq.com/pay/unifiedorder 。 传入detail 、version参数,其他同正常模式相同。 券配置如下截图: [图片] [图片] [图片] [图片] 调用接口参数 <xml> <nonce_str> <![CDATA[ea6d7565585d4b8f8e7c206eb6ce18ee]]> </nonce_str> <openid> <![CDATA[oa6mm5D**********D1fqBuP2X_Y]]> </openid> <sign> <![CDATA[276D774A87FD27F56DB66C52B490795F277296ADEB768D4586A70E2DFB4F4F19]]> </sign> <mch_id> <![CDATA[1514***351]]> </mch_id> <body> <![CDATA[2022053013515300008]]> </body> <notify_url> <![CDATA[http://www.baidu.com]]> </notify_url> <spbill_create_ip> <![CDATA[127.0.0.1]]> </spbill_create_ip> <version> <![CDATA[1.0]]> </version> <out_trade_no> <![CDATA[2022053013515311]]> </out_trade_no> <appid> <![CDATA[wx30211*****7e48a]]> </appid> <total_fee> <![CDATA[401]]> </total_fee> <trade_type> <![CDATA[JSAPI]]> </trade_type> <detail> <![CDATA[[{"goods_detail":[{"goods_name":"使君子","quantity":2,"price":200,"goods_id":"3077687647796203695"}]}]]]> </detail> <sign_type> <![CDATA[HMAC-SHA256]]> </sign_type> </xml> 请帮忙解答,谢谢!
2022-06-01 - 【委托代扣API】常见问题
文档地址:扣费服务 Q1:商户调用【申请扣款】接口返回"err_code:RULELIMIT,err_code_des:交易金额或次数超出限制,请检查后再试"是什么原因? A1:商户扣款时超出了模板id配置的最大扣款金额或次数,如有需要可以联系微信运营申请提升额度或次数。 Q2:申请扣款周期说明 A2:请参考以下几点: 自动续费周期一般是以月、季度为周期,具体扣款发起时间不受模版内容的周期影响;委托代扣额度初始额度:单笔500、单日2500;授权扣款和免密支付,在额度限制内可以每天扣款5次(同一个用户在一个签约协议下;扣款失败不计算次数);自动续费模版需要按模版内容设定的周期扣款,且同一个用户在一个签约协议下每天仅可以扣款一次,如上线前需多次测试签约扣款,请申请测试模版(模版名称标明为测试,测试模版限额为每次0.1元,每天可扣款100次)。 Q3:签约和解约信息是通过什么路径通知给商户的? A3:签约通知是通过签约接口上传的notify_url参数所填写的地址回调通知的(签约失败不通知)。解约信息是通过创建模版ID时填写的解约通知URL来回调通知的。 Q4:申请扣款接口已经返回成功,为什么还会扣款失败? A4:申请扣款接口返回成功仅代表申请受理成功,不代表最终的扣款结果,扣款结果应以支付结果通知接口通知的结果为准,无论扣款是否成功都会返回扣款结果及原因。 Q5:商户调起微信纯签约报错“参数构造错误”如图,是什么原因? [图片] A5:检查下文档要求的必填参数有没漏传,或者文档中没有的参数有没多传。 Q6:商户调用H5纯签约返回“签约参数签名校验错误”是什么原因? A6:请参考以下几点: 检查下签名是否正确,商户签名使用的key是否正确,并且key用的是api秘钥,不是apiv3秘钥,签名方式和api秘钥设置路径参看文档指引,商户可以用在线工具自行校验,工具地址;检查下商户传的notify_url参数文档是否有要求encode,如文档要求encode,则商户签名时需要使用encode之前原样的notify_url进行签名,encode只需一次即可。检查下文档要求的必填参数有没漏传,或者文档中没有的参数有没多传。 Q7:委托委托代扣模板id停用后会有什么影响? A7:已签约用户可以继续扣费或解约,不能新增签约,停用模板id后无法恢复使用,商户自行评估风险 Q8:公众号纯签约跳转签约页面后用户点击开通自动续费没反应是什么原因? A8:引导用户更新一下微信或清除下微信缓存,这种一般是偶现的,杀死进程重新启动再试试。 Q9:商户使用预扣费通知模式场景下,对于没有发送微信预扣费通知的用户,商户调用申请扣款接口后,微信端会返回什么错误? A9:接口会返回错误码INVALID_REQUEST,商户需要先下发扣费前通知才能发起扣费,若当前签约扣费期已结束,商户如需扣费则需重新发起扣费前通知。 Q10:商户从24小时扣费模式迁移到预扣费通知模式阶段时,发送预扣费通知后,解约后重新签约,可直接进行扣款,不受扣费等待期限制,这样是正常的吗? A10:正常的,用户解约后就是新的协议了,预扣费通知限制的维度是协议,没有发送过预扣费通知的协议,可以走直接扣费模式,发送过预扣费通知的协议,走预扣费通知模式,商户在迁移阶段,只有两种模式可以扣:预扣费通知模式和直接扣费模式,商户完成迁移后需联系微信侧运营确认,微信侧运营则会通知业管同事在系统中操作“迁移完成”,之后商户就只能走预扣费通知模式了。 Q11:预扣费通知中的错误码“RESOURCE_ALREADY_EXISTS”和“INVALID_REQUEST”的错误码描述意思是一样的,“RESOURCE_ALREADY_EXISTS”错误码描述为:已经下发过预扣费通知,请勿重复下发,“INVALID_REQUEST”错误码描述为:已经发送过扣费前通知,需要等本次扣费完成后再发起新,有什么区别吗? A11:错误码“RESOURCE_ALREADY_EXISTS”表示是相同参数,重复发送,错误码“INVALID_REQUEST”表示是发送过,参数不一样。错误码“RESOURCE_ALREADY_EXISTS”可以认为是发送成功。错误码“INVALID_REQUEST”可以认为是发送失败。 Q12:一个微信用户能否与商户多次签约? A12:签约遵循同一个商户号+同一个模版ID+同一个微信号只能签约一次的原则。多次签约可采用多模版ID的方式,同一个商户号下的每个不同模版ID都可以与同一微信用户分别签约一次。 Q13:委托代扣解约回调地址修改后多久生效? A13:实时生效 Q14:商户使用微信支付商户平台发起的解约,收到的解约回调里的协议解约方式是3(商户API解约)这个是正常的吗? A14:正常的,目前微信支付商户平台就是调用商户API解约的。 Q15:商户调起微信纯签约报错“签名参数构造错误”如图,是什么原因? [图片] A15:请参考以下几点: 检查下签名是否正确,商户签名使用的key是否正确,并且key用的是api秘钥,不是apiv3秘钥,签名方式和api秘钥设置路径参看文档指引,商户可以用在线工具自行校验,工具地址;检查下商户传的notify_url参数文档是否有要求encode,如文档要求encode,则商户签名时需要使用encode之前原样的notify_url进行签名,encode只需一次即可。 Q16:支付中签约是否支持传入分账标识实现订单分账功能? A16:暂不支持,支付中签约下单接口不会识别商户分账标识 Q17:单用户在单模板下商户尝试调用申请扣款接口的频率是多少? A17:单用户在单模板下商户尝试调用申请扣款接口一天不能超过默认次数300次(包含succee和fail的返回,succee才表示扣款受理成功,等待扣款中) Q18:app纯签约点击完成后没有返回app而是停留在了微信聊天界面? A18: 商户登录开放平台检查对应app应用是否有跳转权限[图片] 2.按照文档排查下是否正常处理回调,参看文档https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html(注意:taskAffinity要填你的应用主taskAffinity(其实就是主界面的task,如果没有主动配置的话,默认是应用包名,如果要配置的,要改成跟配置的一样) [图片] 3.商户检查申请模板时的模版名称中是否有空格,如有只能删除模版名称中的空格后重新申请模板 [图片] 4.商户检查用户账户展示名称参数contract_display_account是否有空格,中英文符号,特殊字符串 Q19:app纯签约签约完成后,点击完成按钮,android点击没有反应,iOS点击提示“离开微信”,随后提示"未安装应用"? A19:请参考以下几点: 检查下商户传的appid是不是签约的这个app的appid检查返回的appid对应的app是否有安装检查商户的app是否有在手机注册schema地址 Q20:h5纯签约签约完成后点击完成按钮返回浏览器报错"launchApplication:fail_url need encode"? [图片] A20:原因:商户请求签约的原url,里面参数嵌套了其它url地址,所以导致微信侧回跳的时候,解析错误了。这里面failUrl和redirectUrl虽然做了encode,但是由于微信侧回跳前会做一层decode,所以decode之后的链接是一个非法链接,被拦截了。如果商户需要嵌套url地址,可以做两层encode试试,建议解决方式:剔除参数中嵌套的url。 Q21:Url Schema指的是什么,UA指的是什么? A21: url schenma指的是app页面跳转协议地址UA指的是浏览器的User Agent,会跟随HTTP协议的header传递 Q22:app纯签约接口是否支付多账号签约功能? A22:支持,商户只需在app纯签约中的预签约接口里多传入outerid字段即可,参数值格式必须按照此示例:李*艳(00000000000),否者会报错"<xml><return_code><![CDATA[FAIL]]></return_code><return_msg<![CDATA[PARAMERROR:outerid]]></return_msg></xml>" Q23:多账号签约接口里的contract_outerid和outerid的长度限制分别是多少? A23:contract_outerid32位字符,outerid32位字符 Q24:公众号纯签约商户的短链接可以跳转到签约页面,商户的长链接跳转报502是什么原因? A24:链接超长,目前链接长度限制在1024字节以内 Q25:已签约同个模板id的用户使用支付中签约有已签约的提示吗? A25:支付中签约一直都没有已签约的提示,纯签约会有提示 Q26:使用签约协议号A已签约后再解约,后续还可以使用签约协议号A签约成功吗,对吗? A26:目前是这样的 Q27:商户调用支付中签约生成的订单使用的查询订单和支付回调结果通知是哪个文档? A27:支付中签约生成的订单使用普通支付的查询订单接口(文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2)和普通支付的支付结果回调通知接口(文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8) Q28:开通多账号签约功能的模板id,如果同一个微信签约了两个用户,那么模板id扣款次数限制规则是不是应该按两个不同的签约用户分开计算 A28:是的,针对每个签约独立计算 Q29:同个微信号在同个模板下当天有扣款次数限制吗? A29:同个微信号在同个模板下当天最多能扣150次,总共包含商户重试申请扣款失败的次数和申请扣款成功的次数 Q30:商户调用申请扣款接口报错“扣款请求已受理,请勿重复发起” A30:据自动续费规则,一个协议ID,在等待期间(24小时内),只能有一笔扣款 Q31:h5纯签约ios拉起签约后点击左上角返回的是微信,Android拉起签约后点击左上角返回的是拉起的签约页面,这是正常的吗 A31:这是正常的,Android 能返回是因为只拉起WebView界面,结束之后把WebVIew关了,然后就漏出了浏览器,iOS做不到只拉起WebView界面,结束之后只能到聊天页面 Q32:h5纯签约签约完成后点击完成按钮返回的是商户首页(域名),不是发起签约请求的页面 A32: 1.浏览器发起签约场景: 问题根因:referer由于客户端webview内核安全策略变更,需要源页面进行授权后,才能获取完整URL,否则无法在签约完成后,原路跳回商户的H5页面,浏览器由于兼容性问题导致微信侧获取的referer只有域名部分,丢失了path部分,所以返回的是商户域名页 微信支付侧协助寻找了以下解决方案,建议商户试试,如仍有问题需商户自行联系浏览器厂商处理: 商户跳转前的源H5页面,需要在html中做referrer-policy的授权声明: 方法一(推荐): <meta name="referrer" content="no-referrer-when-downgrade">> 方法二: <meta name="referrer" content="unsafe-url"> 安全策略详情可参考:https://developers.google.com/web/updates/2020/07/referrer-policy-new-chrome-default Referrer-Policy声明的用法可参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy 注意: ① 商户需要检查一下html里面是否有多个meta name="Referrer"的声明(比如声明了一个<meta name="Referrer" content="origin" />,会覆盖开头的声明,需要删掉) ② 检查发起签约页面跳转微信时是否有处理过(比如中转页面或着在后台跳转的),必须是商户前端发起的跳转,否则不会生效 ③由于iOS15对referrer policy更加严格,referer只带了host没有带path,但iOS14以及之前版本的referer带了host和path,导致了iOS15以上目前只能返回商户域名页面 2.商户发起签约页面地址中有片段标识符: 片段标识符(URI Fragment,即URL中#号后面的部分)仅用作浏览器端的处理,不会参与到服务端请求中,故签约完成回跳不会带上这部分信息。 Q33:app内嵌h5纯签约无法唤起微信的签约页面是什么原因? A33:建议检查拉起微信的app是否有拒绝打开授权,历史上的case都是用户自己拒绝了唤起授权。 Q34:商户使用申请扣款(pay/pappayapply)下单成功后,再调用关单接口(/pay/closeorder)成功后,之后再使用代扣的查询订单接口(/pay/paporderquery)查不到这笔订单,报错”订单不是委托代扣场景“,目前有什么解决方式吗? A34:商户可以使用基础支付的查询订单接口来确认订单状态。 Q35:商户app内嵌h5发起h5纯签约签约完成后,申请了返回app的权限,返回app时提示“launchApplication:fail”,是什么原因? A35:原因是商户配置的app的Schema有误导致无法正常跳回app,商户可以联系app的开发人员检查下操作系统中是否有注册这个Schema以及配置的appid是否正确。 Q36:商户调起微信纯签约报错“商家系统错误,请联系商家处理”如图,是什么原因? [图片] A36:请参考以下几点: 检查下签名是否正确,商户签名使用的key是否正确,并且key用的是api秘钥,不是apiv3秘钥,签名方式和api秘钥设置路径参看文档指引,商户可以用在线工具自行校验,工具地址;检查下商户传的notify_url参数文档是否有要求encode,如文档要求encode,则商户签名时需要使用encode之前原样的notify_url进行签名,encode只需一次即可。检查下文档要求的必填参数有没漏传,或者文档中没有的参数有没多传。h5纯签约的情况需要特殊申请权限,联系对接的运营咨询检查request_serial(请求序列号)或timestamp(时间戳)是否为int类型,是否小于9位
10-12