背景
对接微信支付开发时需要申请商户号和公众号,对于个人开发来说门槛相对偏高,我们可以在微信官方申请测试号。微信官方申请链接
申请方式
主要就是第二步在填写接口配置信息的时候,经常会提示配置失败,具体配置错误见下图:
我们先来看一下官方给出的提示:
请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证。
-
需要你有自己的服务器资源 – 就是你要有自己的服务器,在提交配置信息的时候要保证微信可以访问到你的服务器,所以服务器必须外网能够访问到。
-
填写的url – 这个url必须是不带端口的域名地址,例如:https://www.example.com/weixin/verifyToken
-
填写的URL需要正确响应微信发送的Token验证 – 你填写的Token,微信要进行验证,具体的验证你可以在你要部署的应用里面加一个可访问的接口,当你点击提交的时候微信官方就会访问你这个接口进行验证。
具体接口代码如下:
参考:https://blog.csdn.net/weixin_38306434/article/details/81384480
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/weixin")
public class WechatController {
private static Logger logger = Logger.getLogger(WechatController.class);
private static String WECHAT_TOKEN = "WADJFSASF"; //WECHAT_TOKEN和你申请时填写的Token一样
@RequestMapping(value = "/verityToken")
public void get(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("请求进来了...");
Enumeration pNames = request.getParameterNames();
while (pNames.hasMoreElements()) {
String name = (String) pNames.nextElement();
String value = request.getParameter(name);
String log = "name =" + name + " value =" + value;
logger.info(log);
}
String signature = request.getParameter("signature");/// 微信加密签名
String timestamp = request.getParameter("timestamp");/// 时间戳
String nonce = request.getParameter("nonce"); /// 随机数
String echostr = request.getParameter("echostr"); // 随机字符串
PrintWriter out = response.getWriter();
out.print(echostr);
out.close();
}
}
服务器上启动应用,在填写域名后直接点击提交按钮会提示配置成功。
其他配置根据官方提示一步一步填写,应该不会有太大问题了。
注意:
在使用JSAPI支付方式时还需要填写网页授权域名用来获取用户的openID(域名地址不能加端口号),如下图: