Skip to content

Instantly share code, notes, and snippets.

@myesn
Last active October 31, 2024 02:46
Show Gist options
  • Save myesn/ea5a68f68ce621ebf28ef73c9a160fad to your computer and use it in GitHub Desktop.
Save myesn/ea5a68f68ce621ebf28ef73c9a160fad to your computer and use it in GitHub Desktop.
通过 User-Agent 请求头区分扫码端应用,可实现一码适配多平台支付
const http = require("http");
const hostname = "0.0.0.0"; // 允许局域网内访问
const port = 3000;
const server = http.createServer((req, res) => {
let clientDisplayName = undefined;
const userAgent = req.headers["user-agent"];
if (userAgent.includes("MicroMessenger")) {
// wechat
// user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.52(0x18003426) NetType/WIFI Language/zh_CN
clientDisplayName = "微信扫码";
} else if (userAgent.includes("AliApp")) {
// alipay
// user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/21G93 Ariver/1.1.0 AliApp(AP/10.6.36.6000) Nebula WK RVKType(1) AlipayDefined(nt:WIFI,ws:414|832|2.0) AlipayClient/10.6.36.6000 Alipay Language/zh-Hans Region/CN NebulaX/1.0.0 DTN/2.0
clientDisplayName = "支付宝扫码";
} else {
clientDisplayName = "未知客户端扫码\r\n" + userAgent;
}
// 返回响应
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain; charset=utf-8;");
res.end(clientDisplayName);
});
server.listen(port, hostname, () => {
console.log(`服务器运行在 http://${hostname}:${port}/`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment