微信支付回调,内网穿透详细过程

public class MyPayConfig implements WXPayConfig {
          
   
    @Override
    public String getAppID() {
          
   
        return "wx632c8f211f8122c6";
    }

    @Override
    public String getMchID() {
          
   
        return "1497984412";
    }

    @Override
    public String getKey() {
          
   
        return "sbNCm1JnevqI36LrEaxFwcaT0hkGxFnC";
    }

    @Override
    public InputStream getCertStream() {
          
   
        return null;
    }

    @Override
    public int getHttpConnectTimeoutMs() {
          
   
        return 0;
    }

    @Override
    public int getHttpReadTimeoutMs() {
          
   
        return 0;
    }
}

支付回调接口

通过Ngrok进行内网穿透步骤

1. 根据邮箱注册一个账号

2. 获取隧道id

获取隧道id: 182810384749

3.下载Ngrok客户端

4. 双击这个 Sunny-Ngrok启动工具.bat 文件

5. 填写你的 隧道id 回车
6.客户端启动成功

相当于访问url: http://monkey.free.idcfengye.com 就是访问 我们的 localhost:8080

7. 所以你的notify_url对应的value需要改为内网穿透的地址为

http://monkey.free.idcfengye.com/pay/success

8.支付成功之后微信平台会发来消息

2. 支付成功更新订单状态

Map<String, String> map1 = new HashMap<>(16);
                map.put("result_code","success");
                map.put("return_msg","OK");
                map.put("appid",map.get("appid"));
                map.put("return_code","success");
                return WXPayUtil.mapToXml(map1);

前端进行轮询查询数据库订单信息

间隔1秒请求后端,查询订单状态。

//前端轮询查询数据是否付款成功
			//mounted的里面的方法不可以直接调用methods里面的isPay();
			var oid = this.orderInfo.orderId;
			setInterval(function(){
          
   
				console.log("------轮询调用-----");
					var url = baseUrl + "order/queryOrderByid?oid=" + oid;
					axios({
          
   
					url:url,
					method:"get",
					headers:{
          
   
						token:getCookieValue("token")
					}	
						}).then(res =>{
          
   
						if(res.data.data == "1"){
          
   
							//订单没有支付
							
						}else if(res.data.data == "2"){
          
   
							$("#message").html("<label style=font-size:30px;color:green> 订单支付成功! </label>");
							return;
							
						}

					});

				},1000);

1. 整个前端页面信息

通过WebSocket进行消息的推送,减少前端请求的次数,直接推送一次就行 推荐使用

1 WebSocketConfig

package com.qfedu.fmmall.websocket;/*
 **
 *@author SmallMonkey
 *@Date 2022/12/10 17:20
 *
 *
 **/

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;


@Configuration
public class WebSocketConfig {
          
   
    @Bean
    public ServerEndpointExporter getServerEndpointExporter(){
          
   
        return new ServerEndpointExporter();
    }

}

2. WebSocketServer

package com.qfedu.fmmall.websocket;/*
 **
 *@author SmallMonkey
 *@Date 2022/12/10 17:31
 *
 *
 **/

import org.springframework.stereotype.Component;

import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;

@Component
@ServerEndpoint("/webSocket/{oid}")
public class WebSocketServer {
          
   
    private static ConcurrentHashMap<String,Session> sessionConcurrentHashMap = new ConcurrentHashMap<>();

    /*前端发送请求建立webSocket连接,就会执行@OnOpen方法
    * @param oid @PathParam 用来获取参数
    *
    * */
    @OnOpen
    public void open(@PathParam("oid") String orderId, Session session){
          
   
        System.out.println("连接成功---------");
        sessionConcurrentHashMap.put(orderId,session);
    }
    /*前端关闭页面和断开连接关闭webSocket时都会执行*/
    @OnClose
    public void close(@PathParam("oid") String orderId,Session session){
          
   
        sessionConcurrentHashMap.remove(orderId);
    }

    public static void sendMsg(String orderId,String msg){
          
   

        try {
          
   
            Session session = sessionConcurrentHashMap.get(orderId);
            session.getBasicRemote().sendText(msg);
        } catch (Exception e) {
          
   
            e.printStackTrace();
        }
    }
}

3. 支付成功,修改订单状态后进行推送

4 前端修改之后的code

经验分享 程序员 微信小程序 职场和发展