微信支付
在开发和体验版唤起微信支付都没有问题,点击“确认支付”就弹出这个框。 微信支付的产品中已经申请了jsapi支付。[图片] 支付失败,失败原因:requestPayment:fail jsapi has no permission,event=requestPayment.runningState=foregroundpermissionMsg=permission got.detail=jsapi has been banned,appld=wx757ff70065295b09
对于微信支付服务商模式,我不需要获取用户的sub_openid,是不是就可以不给特约商户绑定sub_appid了,就用服务商的appid调支付接口
申请交易账单 https://pay.weixin.qq.com/doc/v3/merchant/4012791907 微信资金账单详细说明 https://pay.weixin.qq.com/doc/v3/merchant/4013071249 我正在做用接口获取微信的交易账单和资金账单,以自动同步到数据库中 现在碰到一个问题是,如何唯一确定单笔明细,做到幂等,防止重复同步明细 比方说用户导入的场景,用户下载了23号账单,和当月所有账单,先导入23号账单,再导入当月账单,那么我需要在当月账单导入时,判断数据是否已经在数据库中 微信交易账单我可以设置一个 唯一单号=IF(交易状态="SUCCESS",微信订单号,微信退款单号) 我不确定资金账单是否可以这样设置 唯一单号=业务凭证号&收支类型 从我导出的资金账单来看,微信支付业务单号、资金流水单号、业务凭证号都会重复 一笔交易结算时会拆成两笔资金明细,收入和手续费支出 如果我用收支类型拼接业务凭证号来防重,看起来是可以实现的 但是我怕后续微信业务变动时,会出现一笔收入和多笔支出 [图片] 微信交易账单表头 交易时间 公众账号ID 商户号 特约商户号 设备号 微信订单号 商户订单号 用户标识 交易类型 交易状态 唯一单号 付款银行 货币种类 应结订单金额 代金券金额 微信退款单号 商户退款单号 退款金额 充值券退款金额 退款类型 退款状态 商品名称 商户数据包 手续费 费率 订单金额 申请退款金额 费率备注 微信资金账单表头 记账时间 微信支付业务单号 资金流水单号 业务名称 业务类型 收支类型 收支金额(元) 账户结余(元) 资金变更提交申请人 备注 业务凭证号
如何判断当前选择或查看当前商户的API版本?目前是小程序V2可用,新增APP方式应该选择V2还是V3?如果APIV2下,androidAPP是否可以用最新的SDK还是旧版SDK?
[图片]商户号有一段时间没有使用,现在重新使用,已进行商户权限的恢复处理。重新生成api证书和生成密钥。现在发放红包显示签名错误,请问下怎么解决
佣金提现时,偶尔出现“超出商户单日转账额度,核实产品设置是否准确” 是什么原因导致的
商户号微信支付分可以给多个小程序appid使用吗? 目前通过商户号关联的APPID绑定了。但是新的APPID无法使用支付分服务。请问这个能否实现?或者有要求appID和商户号同一主体吗?
[图片] 查看文档发现同类问题,但是目前问题手机的微信是最新版的,还是出现了空白页。
因为域名和返回的根证书所解析的域名不一致,无法直接调用微信的公共域名接口,https://api.mch.weixin.qq.com,需要走网络专线,怎么申请
为什么在微信支付平台里面的产品大全中找不到商户支付到零钱?
timeStamp,packageVal,paySign,appId,"signType":"RSA",nonceStr 感觉都是对的,云函数返回调用成功,就是无法唤起微信支付组件,看了相关问题,说是 小程序有B2B类目,我的也有,然后在小程序类目里删除了b2b类目,但是返回错误一样,还需要怎么处理吗?
使用场景,1:我司想开发一个小区线上缴物业费的APP和小程序,现在是我司如果能申请一个0.2%手续费的资格,后我们发展二级商户(也就是物业公司)我们在给二级商户能自定义手续费(可以0.2%-5%),请各位大神看是否可以后实现
@Override public R transferBill(String transactionId, String openId, Integer money) { Map map = new HashMap<>(); String appid = APPID; map.put("appid", appid); String value = String.valueOf(transactionId); map.put("transfer_scene_id", "1000"); //发放场景 map.put("out_bill_no", value); map.put("openid", openId); map.put("transfer_amount", money); map.put("transfer_remark", "openId"); // data.put("user_recv_perception", "CashReward"); map.put("user_recv_perception", "现金奖励"); //用户感知 List list = new ArrayList<>(); Map subMap = new HashMap<>(2); //商家明细单号 subMap.put("info_type", "活动名称"); //转账金额 subMap.put("info_content", "佣金提现"); Map subjectMap = new HashMap<>(2); //商家明细单号 subjectMap.put("info_type", "奖励说明"); //转账金额 subjectMap.put("info_content", "业务推广佣金"); list.add(subMap); list.add(subjectMap); map.put("transfer_scene_report_infos", list); OkHttpClient okHttpClient = new OkHttpClient(); com.wechat.pay.java.core.http.HttpClient httpClient = new DefaultHttpClientBuilder().config(rsaAutoCertificateConfig).okHttpClient(okHttpClient).build(); HttpHeaders headers = new HttpHeaders(); headers.addHeader("Accept", MediaType.APPLICATION_JSON.getValue()); headers.addHeader("Content-Type", MediaType.APPLICATION_JSON.getValue()); headers.addHeader("Wechatpay-Serial", ConstantPropertiesUtils.MERCHANT); String s = JSONUtil.toJsonStr(map); JsonRequestBody build = new JsonRequestBody.Builder() .body(s) .build(); com.wechat.pay.java.core.http.HttpRequest executeSendGetHttpRequest = new HttpRequest.Builder() .httpMethod(HttpMethod.POST) .url("https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills") .headers(headers) .body(build) .build(); HttpResponse execute = null; try { execute = httpClient.execute(executeSendGetHttpRequest, Response.class); ResponseBody body = execute.getBody(); String string = body.toString(); Map responseMap = JSONObject.parseObject(string, Map.class); Response serviceResponse = execute.getServiceResponse(); log.info("返回体{}",serviceResponse.toString()); return R.ok(responseMap); } catch (Exception e) { e.printStackTrace(); } return null; } 以下是接口的报错信息: com.google.gson.JsonIOException: Failed making field 'java.security.cert.Certificate#type' accessible; either increase its visibility or write a custom TypeAdapter for its declaring type. at com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:38) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:286) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130) at com.google.gson.Gson.getAdapter(Gson.java:556) at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) at com.google.gson.Gson.getAdapter(Gson.java:556) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130) at com.google.gson.Gson.getAdapter(Gson.java:556) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130) at com.google.gson.Gson.getAdapter(Gson.java:556) at com.google.gson.Gson.fromJson(Gson.java:1226) at com.google.gson.Gson.fromJson(Gson.java:1137) at com.google.gson.Gson.fromJson(Gson.java:1047) at com.google.gson.Gson.fromJson(Gson.java:982) at com.wechat.pay.java.core.http.HttpResponse$Builder.build(HttpResponse.java:101) at com.wechat.pay.java.core.http.AbstractHttpClient.assembleHttpResponse(AbstractHttpClient.java:108) at com.wechat.pay.java.core.http.AbstractHttpClient.execute(AbstractHttpClient.java:48) at com.lzsh.mini.payment.service.impl.WeixinServiceImpl.transferBill(WeixinServiceImpl.java:993) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716) at com.lzsh.mini.payment.service.impl.WeixinServiceImpl$$SpringCGLIB$$0.transferBill() at com.lzsh.mini.payment.controller.WeixinController.sendMoney(WeixinController.java:104) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at com.lzsh.common.web.filter.RepeatableFilter.doFilter(RepeatableFilter.java:30) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at com.lzsh.common.web.filter.TraceIdFilter.doFilter(TraceIdFilter.java:34) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at cn.dev33.satoken.filter.SaServletFilter.doFilter(SaServletFilter.java:150) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at cn.dev33.satoken.filter.SaPathCheckFilterForJakartaServlet.doFilter(SaPathCheckFilterForJakartaServlet.java:55) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:113) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at com.lzsh.common.web.filter.XssFilter.doFilter(XssFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at com.lzsh.common.encrypt.filter.CryptoFilter.doFilter(CryptoFilter.java:69) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.String java.security.cert.Certificate.type accessible: module java.base does not "opens java.security.cert" to unnamed module @33afa13b at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:35) ... 102 more com.wechat.pay.java.core.exception.ServiceException: Wrong HttpStatusCode[401] 结果就是,钱扣了,但是接口还是报错了.排查了一天了都不知道是什么原因 请大佬指教!!!
普通微信支付提示这个错误,是什么原因,证书和密钥都更换了[图片]
钱包用户在支付订单时,微信大陆钱包和香港钱包 切换,会导致一笔订单重复支付么?
商家转账APP调起用户确认收款 uniapp怎么接,不是安卓原生写的
商家转账功能已开通,但是调用的时候接口返回:[图片] 根据提示去看,最新接口变成了这个:/v3/fund-app/mch-transfer/transfer-bills 我之前用的是:/v3/transfer/batches 现在是下面这个接口已经直接弃用了吗?我看现在提供的sdk版本仍然是0.2.15,但是这个版本的方法与transfer-bills这个接口差太远了。[图片] 有没有大佬告知一下,sdk版本中的方法已经要被淘汰了吗?还是因为下图的IP接口没有配置导致的。 [图片]
新版的wechatpay-java0.2.15中缺少com.wechat.pay.java.service 之前使用的是0.2.10 中是包含这个service层的 新版的文档上边也没有说明呢
用php版本得SDK。支付后回调遇到个奇怪的问题,微信支付后消息回调: // 检查通知时间偏移量,允许5分钟之内的偏移 $timeOffsetStatus = 300 >= abs(Formatter::timestamp() - (int)$inWechatpayTimestamp); $verifiedStatus = Rsa::verify( // 构造验签名串 Formatter::joinedByLineFeed($inWechatpayTimestamp, $inWechatpayNonce, $inBody), $inWechatpaySignature, $platformPublicKeyInstance ); if ($timeOffsetStatus && $verifiedStatus) { 就是这里了,很奇怪,$timeOffsetStatus变量是true,时间判读偏移没问题, 但是$verifiedStatus,SDK签名验证方法验证不过去,也没有返回值,被当fals处理了,很奇怪。 删除 $verifiedStatus条件判断,返回消息是可以解密得到数据得。 这里可都是SDK实例代码,按说不应该错啊。 } 请各位指教!
原商户正常运行,最近切换新商户发代金券的时候就直接报错了?微信这边返回“无可用的平台证书,请在商户平台-API安全申请使用微信支付公钥”,请问是什么问题?下述为旧代码片段。[图片]