微信支付 body不是UTF编码格式

14

微信支付 body不是UTF编码格式

微信支付体验报文编码问题

在微信支付的开发过程中,我们可能会遇到一些编码相关的问题。特别是在处理微信支付的请求和响应时,需要注意的是,微信支付的body(即请求或响应体)不是使用UTF-8编码格式的。

背景

在我们的项目中,我们使用Eclipse作为开发环境,数据库也是使用UTF-8编码的。Tomcat也配置了UTF-8编码。然而,在处理微信支付的请求和响应时,我们发现body编码并不是UTF-8。

问题描述

当我们尝试发送请求或接收响应时,可能会遇到编码错误的问题。这是因为微信支付的body使用的是非UTF-8编码格式。具体来说,微信支付使用的是GBK编码(也称为简体中文编码)。

解决方案

有两个解决方案可以解决这个问题:

1. 签名时MD5指定编码

在生成签名时,我们需要指定编码格式为GBK。我们可以使用以下代码来实现这一点:

```javaMessageDigest md = MessageDigest.getInstance("MD5");

byte[] bytes = ...; //生成签名的字节数组String sign = new String(bytes, "GBK"); // 指定编码格式为GBK```

2. 在请求或响应中指定编码

我们可以在请求或响应中指定编码格式为GBK。例如,在Tomcat配置文件中,我们可以添加以下代码:

```xml

redirectPort="8443" URIEncoding="GBK"/>

```

总结

微信支付的body编码不是UTF-8,需要注意的是使用GBK编码。我们可以通过在签名时指定编码格式为GBK或在请求或响应中指定编码格式为GBK来解决这个问题。

参考内容

* Eclipse环境配置: Tomcat配置: 微信支付API文档:

支付android支付微信

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 【学相伴】微信支付V3版实战课上线

下一篇 uniapp微信支付方案