微信支付
请问超出重试期,这个重试期限是多久
小程序进行测试的时候,支付一直不成功。提示由于小程序违规,支付功能暂时无法使用。但是我们这个小程序是刚注册的,认证备案都通过了,也没有违规的信息提醒,所以要怎么解决?反正一到支付阶段就提示报错,我这边也无法进行下一步 [图片][图片]
开发指引里说商户收到通知后需要手动查询,但商家转账回调通知的resource解密后不是已经有相关数据了吗,大家是怎么做的,在回调处理里还需请求查询接口吗 [图片] [图片]
public static void main(String[] args) { try { Map<String, Object> refundParams = new HashMap<>(); refundParams.put("out_trade_no", "ET1000000722"); refundParams.put("out_refund_no", "ET10000007223"); Map<String, Integer> amount = new HashMap<>(); amount.put("total", 1); amount.put("refund", 1); refundParams.put("amount", amount); String response = sendRefundRequest(refundParams); System.out.println("退款接口返回结果:" + response); } catch (Exception e) { e.printStackTrace(); } } private static PrivateKey loadPrivateKey(String certPath) throws Exception { try (InputStream inputStream = new FileInputStream(certPath)) { return PemUtil.loadPrivateKey(inputStream); } } public static String sendRefundRequest(Map<String, Object> params) throws Exception { Gson gson = new Gson(); String requestBody = gson.toJson(params); PrivateKey privateKey = loadPrivateKey(CERT_PATH); String timestamp = String.valueOf(System.currentTimeMillis() / 1000); String nonceStr = generateNonceStr(); String signature = generateSignature(timestamp, nonceStr, API_V3_KEY, privateKey, params); String authorization = String.format("WECHATPAY2-SHA256-RSA2048 mchid=\"%s\",nonce_str=\"%s\",timestamp=\"%s\",signature=\"%s\"", MCH_ID, nonceStr, timestamp, signature); CloseableHttpClient httpClient = getHttpClientWithCert(CERT_PATH); HttpPost httpPost = new HttpPost(REFUND_URL); httpPost.addHeader("Authorization", authorization); httpPost.addHeader("Content-Type", "application/json"); httpPost.addHeader("Accept", "application/json"); httpPost.addHeader("User-Agent", "WeChatJavaClient/1.0"); httpPost.setEntity(new StringEntity(requestBody, "UTF-8")); CloseableHttpResponse response = httpClient.execute(httpPost); HttpEntity responseEntity = response.getEntity(); String responseBody = EntityUtils.toString(responseEntity, "UTF-8"); response.close(); httpClient.close(); return responseBody; } private static String generateSignature(String timestamp, String nonceStr, String apiV3Key, PrivateKey privateKey, Map<String, Object> params) throws Exception { // 如果 params 为空,则 body 为 "" String body = params == null || params.isEmpty() ? "" : sha256(new Gson().toJson(params)); // 拼接签名字符串 String signStr = String.format("POST\n%s\n%s\n%s\n%s\n", REFUND_URL, timestamp, nonceStr, body); // 使用 RSA 私钥对签名字符串进行签名 java.security.Signature signature = java.security.Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); signature.update(signStr.getBytes("UTF-8")); return Base64.getEncoder().encodeToString(signature.sign()); } private static String sha256(String input) throws Exception { java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256"); byte[] hash = md.digest(input.getBytes("UTF-8")); return bytesToHex(hash); } private static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02x", b)); } return sb.toString(); } private static String generateNonceStr() { return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); } private static CloseableHttpClient getHttpClientWithCert(String certPath) throws Exception { PrivateKey privateKey = loadPrivateKey(certPath); KeyManager[] keyManagers = new KeyManager[]{new CustomX509KeyManager(privateKey)}; SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(keyManagers, null, null); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext); return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } static class CustomX509KeyManager implements X509KeyManager { private final PrivateKey privateKey; public CustomX509KeyManager(PrivateKey privateKey) { this.privateKey = privateKey; } @Override public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) { return "dummyAlias"; // 返回一个虚拟别名 } @Override public String chooseServerAlias(String keyType, Principal[] issuers, Socket socket) { return null; // 服务器端不需要实现 } @Override public X509Certificate[] getCertificateChain(String alias) { return null; // 这里可以返回证书链(如果需要) } @Override public String[] getClientAliases(String keyType, Principal[] issuers) { return new String[]{"dummyAlias"}; // 返回虚拟别名列表 } @Override public String[] getServerAliases(String keyType, Principal[] issuers) { return null; // 服务器端不需要实现 } @Override public PrivateKey getPrivateKey(String alias) { return privateKey; // 返回私钥 } }
[图片]
[图片]
Native支付的统一下单接口中的设备号(device_info)参数什么时候需要商户传?online payment?还是线下支付? https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=9_1
微信支付提示这个 由于小程序违规,支付功能暂时无法使用 有谁帮忙下
2月6日提交了平台收付通申请资料,2月10日被要求补充材料,当日已按照要求补充提交,什么时候能审核通过呢?[图片]
[图片] [图片] 这里点取消,是不是就会员卡也无法开通
想测试消费者投诉回复接口,目前有沙盒或者测试环境可以测试吗?
微信h5支付下单,description字段填的中文,结果报签名错误
加新的好友,转账频繁,就说我涉嫌欺诈把我封禁了,家里的生活缴费都绑定在微信自动扣费,现在支付功能封禁,严重影响生活了,客服电话一直打不通
微信返回的原始响应: <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[SIGN_ERROR]]></return_msg> <mch_appid><![CDATA[*************]]></mch_appid> <mchid><![CDATA[*********]]></mchid> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[SIGN_ERROR]]></err_code> <err_code_des><![CDATA[签名错误]]></err_code_des> </xml> 转账失败: 错误码: SIGN_ERROR, 错误描述: 签名错误 这个的签名错误是哪里的问题?
解决方案: 主要看支付时显示的url http://xxx.xx.com/a/b/#/p/c/d 要看提示的url最后一个字符是否有/ 如果有 例如: http://xxx.xx.com/a/b/#/p/c/d/ 则需要在商户后台的jsapi支付目录配置中加入 http://xxx.xx.com/a/b/#/p/c/d/ 该完整的url 如果没有 例如:http://xxx.xx.com/a/b/#/p/c/d 则需要在商户后台的jsapi支付目录配置中加入 http://xxx.xx.com/a/b/#/p/c/ url的最第一个字符到最后一个/
为什么我没有点金计划得广告费结算中心呢,广告费在哪里查看 ,在哪里结算 [图片]
我找第三方发放银行立减金,有的说最少要充值10000元,但以前的渠道1000元都能充值,所以银行立减金批次充值的总金额是不是与最少发放个数有关?最少要发放多少个?
[图片] 至少也要允许8个人进来的吧。管方机器人就占了2个。我们公司只能进3个人的微信支付通知群。允许加入的人太少了吧。
怎么开通微信免押功能?
该提交的都提交了,怎么总是不通过?不能收款!就一个小本生意,一天收入百八十的,怎么就这么多事?怎么就交易异常了? [图片]