微信支付图片上传小小总结

289 阅读1分钟

前言

最近在做微信支付,感觉虽然有官方的sdk但是还是需要自己认真对接,就写篇文章 来记录下吧🤭

正文

步骤一:

导入Maven依赖

<dependency>
   <groupId>com.github.wechatpay-apiv3</groupId>
   <artifactId>wechatpay-apache-httpclient</artifactId>
   <version>0.4.9</version>
</dependency>

步骤二:

编写图片上传接口业务逻辑

PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(Files.newInputStream(Paths.get(PrivateKeyPath)));
        //使用自动更新的签名验证器,不需要传入证书
        verifier = new AutoUpdateCertificatesVerifier(
                new WechatPay2Credentials(MerchantId, new PrivateKeySigner(MerchantSerialNumber, merchantPrivateKey)),
                wxPayBaseConfig.getApiV3key().getBytes(StandardCharsets.UTF_8));
        httpClient = WechatPayHttpClientBuilder.create()
                .withMerchant(MerchantId, MerchantSerialNumber, merchantPrivateKey)
                .withValidator(new WechatPay2Validator(verifier))
                .build();
        URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
        try (InputStream byteArrayInputStream = new ByteArrayInputStream(file.getBytes())) {
            String sha256 = DigestUtils.sha256Hex(byteArrayInputStream);
            byteArrayInputStream.reset();
            WechatPayUploadHttpPost request = new WechatPayUploadHttpPost.Builder(uri)
                    .withImage(file.getOriginalFilename(), sha256, byteArrayInputStream)
                    .build();
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                HttpEntity httpEntity = response.getEntity();
                String json = EntityUtils.toString(httpEntity);
                Map map = new Gson().fromJson(json, Map.class);
                if (SC_OK == response.getStatusLine().getStatusCode()){
                    return success(map);
                }else {
                    return error((String) map.get("message"));
                }
            }
        }

划重点:

  • 注意打印responese中的body,要不然如果报错只能看到400
  • 如果你用的是MultipartFile,在加密后,记得reset(),否则会报图片上传为空

结语

这是加入掘金大家庭的第一篇文章,这个真的是程序员社区中的一股清流,希望今后和各位jym一起努力成长! 加油呀~🤭