微信支付JAVA DEMO 微信支付爬过的坑

本文详细介绍了使用JAVA实现微信支付统一下单接口的过程及常见问题解决方法。包括如何设置必填参数、生成签名、创建请求报文等关键步骤,并针对xml格式错误、签名错误等问题提供了具体的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA服务端访问统一下单接口:
遇见的问题:
1.xml格式错误
首先明确自己是那种支付方式,我是APP支付方式。
1>要知道传哪些参数
可以看一下《统一下单》的必填参数。其他可以不管,但是必填参数必须要。
header.setParameter("appid", WEIXIN_APPID);
header.setParameter("mch_id", WEIXIN_MCH_ID);
//header.setParameter("device_info", WEIXIN_DEVICE_INFO);
header.setParameter("nonce_str", WEIXIN_NONCE_STR);
header.setParameter("body", WEIXIN_BODY);
header.setParameter("out_trade_no", WEIXIN_OUT_TRADE_NO);
header.setParameter("total_fee", WEIXIN_TOTAL_FEE);
// header.setParameter("spbill_create_ip", request.getRemoteAddr());
// header.setParameter("spbill_create_ip", userIp);
header.setParameter("spbill_create_ip", "外网IP");
header.setParameter("notify_url", WEIXIN_NOTIFY_URL);
header.setParameter("trade_type", WEIXIN_TRADE_TYPE);
//header.setParameter("openid", WEIXIN_OPENID);
 
String signStr = createSign("UTF-8", header.getAllParameters());
System.out.println("统一下单signStr:" + signStr);
//header.setParameter("sign", signStr);
 
String xmlBody = buildXML(header.getAllParameters(), signStr);
System.out.println("统一下单xmlBody:" + xmlBody);
 
2>建立签名字符串
可以看一下《createSign 微信支付生成签名的算法方法》
3>生成签证
可以看一下《微信支付sign签名算法 规则》
4>创建请求报文
可以看一下《微信统一下单 创建请求报文的方法》特别注意一下。sign必须是报文的最后一项值。不然会报xml格式错误。还有就是请求的编码必须是UTF-8。不然会有乱码。
2.sign签证错误
1>签证校验不通过
一个就是传的参数必须要必填。
第二个就是sign必须要在xml的最后面
不然sign校验不通过
3.返回给APP端,支付失败,支付取消等情况
1>支付失败的原因
clientHandler.setParameter("appid", WEIXIN_APPID);
clientHandler.setParameter("noncestr", noncestr);
clientHandler.setParameter("package", "Sign=WXPay");
clientHandler.setParameter("partnerid", WEIXIN_MCH_ID);
clientHandler.setParameter("prepayid", prepayid);
clientHandler.setParameter("timestamp", timestamp);
sign生成必须要这些参数。
不然支付会失败。不能起调微信支付界面。

转载于:https://www.cnblogs.com/yangjy1992/p/7550314.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值