【总结】微信小程序JAVA服务器统一下单请求BODY字段中文签名错误总结

本文分享了一种解决Tomcat中文乱码问题的有效方法。尝试了多种方式未果后,最终通过修改Eclipse中Tomcat的编码设置为UTF-8解决了问题。

之前网上找了好久此问题都没有解决,总结一下基本有一下几种:

1.更改Tomcat配置 编码改为UTF-8

2.String body  = new String("body中文字段值".toString().getBytes("ISO8859-1"),"UTF-8");更改字段编码 签名成功但是最终输出为乱码(原博:https://blog.youkuaiyun.com/xueshenghu/article/details/79423081

3. 将postMethod.setRequestEntity(new StringRequestEntity(xmlString,"text/xml",encode));  改成了post.setEntity(new StringEntity(xml,"UTF-8"));(原博:https://blog.youkuaiyun.com/qq_25821067/article/details/55253399)

4.MD5编码错误(原博:https://blog.youkuaiyun.com/qq_28919337/article/details/78039162

这些方法都试了都没成功!最后的最后我查找了下改console编码的方法 竟然成功了!

我是用Eclipse中运行Tomcat的 运用(原博:https://blog.youkuaiyun.com/wangjun5159/article/details/49160009)中的方法

更改了Tomcatrun as->Run Configuration->Common->Encoding ->Other改为UTF-8再在eclipse中重启Tomcat服务器竟然成功了!!!

本人新手一枚 希望这些经验对大家有用 如果有用的给个赞鼓励下哈


### 微信小程序Java支付集成开发教程 #### 1. 准备工作 在开始之前,确保已经拥有微信小程序账号并完成基本设置。对于服务器端环境的选择,推荐采用Spring Boot框架来简化开发流程[^2]。 #### 2. 创建项目结构 构建一个标准的Maven工程用于承载服务逻辑部分。此过程中会涉及到引入必要的依赖项以及配置文件设定等工作内容。具体的YML配置样例如下所示: ```yaml wx: app-id: wxxxxxxxxxxxxxxx mch-id: xxxxxxxxxxxxxx key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx notify-url: http://yourdomain.com/wxpay/notify ``` 上述代码片段展示了如何定义微信公众平台分配给商户的相关参数信息[^4]。 #### 3. 实现核心业务逻辑 针对支付环节而言,主要涉及以下几个方面的工作: - **发起预支付请求**:调用微信官方提供的统一下单接口获取prepay_id; - **封装签名算法**:按照指定规则计算sign字段值以保证数据传输的安全性; - **处理异步通知消息**:当交易状态发生变化时接收来自微信服务器的通知报文并对之作出响应。 这部分可以通过编写相应的Service层组件和服务方法加以实现。下面给出了一段关于创建订单实例的方法示意代码: ```java @Service public class PayServiceImpl implements IPayService { @Autowired private WxPayConfig config; public Map<String, String> createOrder(Order order) throws Exception { WXPay wxpay = new WXPay(config); // 构建下单所需参数列表... Map<String, String> data = new HashMap<>(); data.put("body", "Test"); data.put("out_trade_no", UUID.randomUUID().toString()); data.put("total_fee", "1"); // 单位为分 data.put("spbill_create_ip", "192.168.0.1"); data.put("notify_url", this.config.getNotifyUrl()); data.put("trade_type", "JSAPI"); try { result = wxpay.unifiedOrder(data); } catch (Exception e){ throw new RuntimeException(e.getMessage(),e); } return result; } } ``` 这段示例说明了怎样利用`WXPay`库执行统一收银台命令,并传递必需的信息以便于后续步骤的操作[^3]。 #### 4. 前端交互设计 最后一步是在客户端展示付款按钮并与后台保持良好的沟通协作关系。通常情况下我们会借助Weixin Mini Program API中的requestPayment函数触发实际扣款动作。以下是简单的JavaScript脚本示范: ```javascript const pay = async function () { const res = await uni.request({ url: 'http://localhost/order/create', method: 'POST' }); let timeStamp = '' + Date.now(); let nonceStr = Math.random().toString(36).substr(2); wx.requestPayment({ 'timeStamp': timeStamp, 'nonceStr': nonceStr, 'package': `prepay_id=${res.data.prepayId}`, 'signType': 'MD5', 'paySign': generateSignature(timeStamp, nonceStr), success(res) { console.log('success', res) }, fail(res) { console.error('fail', res) } }) }; ``` 该段代码描述了一个完整的从发送HTTP POST请求到最终确认支付成功的全过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值