{"id":24951912,"url":"https://github.com/ll89757/wechat-node","last_synced_at":"2025-04-10T12:51:31.503Z","repository":{"id":83145405,"uuid":"131950372","full_name":"LL89757/wechat-node","owner":"LL89757","description":"wechat api by nodejs","archived":false,"fork":false,"pushed_at":"2019-12-20T07:11:17.000Z","size":13,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-07T07:36:06.020Z","etag":null,"topics":["koa2","nodejs","wechat","wechat-api","wechat-node","weixin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LL89757.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-03T06:18:49.000Z","updated_at":"2024-04-22T08:15:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b30e04b-35d7-4963-915f-c226db4d0f99","html_url":"https://github.com/LL89757/wechat-node","commit_stats":{"total_commits":9,"total_committers":2,"mean_commits":4.5,"dds":0.2222222222222222,"last_synced_commit":"362d7fbcf2f1080d17b42faceb88c34bd34fa7a5"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LL89757%2Fwechat-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LL89757%2Fwechat-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LL89757%2Fwechat-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LL89757%2Fwechat-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LL89757","download_url":"https://codeload.github.com/LL89757/wechat-node/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248220106,"owners_count":21067235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["koa2","nodejs","wechat","wechat-api","wechat-node","weixin"],"created_at":"2025-02-03T01:31:53.732Z","updated_at":"2025-04-10T12:51:31.484Z","avatar_url":"https://github.com/LL89757.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wechat-node-sp\n微信API for node.js，目前主要支持小程序及微信支付相关接口\n\n微信小程序官方文档：https://developers.weixin.qq.com/miniprogram/dev/api/\n\n微信支付官方文档：https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7\u0026index=5\n\n## Installation\n```\nnpm install wechat-node-sp\n```\n\n## Usage\n初始化\n```js\nvar weChatApi = require(\"wechat-node-sp\");\n\nvar wechatApi = weChatApi({\n            appId,\n            appSecret,\n            mch_id,//微信商户平台ID\n            pfx: fs.readFileSync(\"./apiclient_cert.p12\"),//微信商户平台支付证书\n            payKey//微信商户平台API秘钥\n        })\n```\n微信登录相关\n```js\n//微信登录\nvar result = await wechatApi.login(code);\nif (result.status === 200 \u0026\u0026 !result.data.errcode) {\n    var data = {\n        openid: result.data.openid,\n        session_key: result.data.session_key,\n        unionid: result.data.unionid\n    }\n    console.log(data);\n} \n//获取用户信息\nvar userInfo = await wechatApi.getWechatUserInfo(sessionKey, encryptedData, iv);\nconsole.log(userInfo);\n```\n\n获取微信token\n```js\n\nvar result = await wechatApi.getAccessToken();\nif (result.data \u0026\u0026 !result.data.errcode) {\n    var token = result.data.access_token;\n    console.log(token);\n}\n\n```\n\n微信小程序下单，获取支付参数\n```js\n\nvar params = {\n        body: \"支付测试\",\n        notify_url: \"https://PayNotify\",\n        openid: \"openid\",\n        out_trade_no: \"111111111111111111111111\",\n        spbill_create_ip: \"客户端ip\",\n        total_fee: 1,\n        trade_type: \"JSAPI\",\n    };\nvar result = await wechatApi.getMiniProgramPayParams(params)\nconsole.log(result);\n\n```\n\n退款接口\n```js\n\nvar params = {\n    out_refund_no: \"\",//退款商户订单号，商户生成\n    out_trade_no: \"\",//需退款订单的商户订单号(二选一)\n    transaction_id:\"\"//需退款订单的微信订单号(二选一)\n    refund_fee: 1,\n    total_fee: 1\n}\nvar result = await wechatApi.refund(params);\nconsole.log(result)\n```\n\n查询订单\n```js\n// 通过商户订单号查\nvar result = await wechatApi.queryOrder( out_trade_no);\n\n// 通过微信订单号查\nvar result = await wechatApi.queryOrder(transaction_id);\n\n\n```\n\n小程序模板推送\n```js\nvar msg={\n        \"touser\": \"openId\",\n        \"template_id\": \"模板id\",\n        \"form_id\": \"formid\",//表单提交场景下，为 submit 事件带上的 formId；支付场景下，为本次支付的 prepay_id\n        \"page\": \"pages/test\",//点击模板消息跳转页面，可不填\n        \"data\": {\n            \"keyword1\": {\n                \"value\": \"推送测试\",\n                \"color\": \"#173177\"\n            },\n            \"keyword2\": {\n                \"value\": \"推送测试\",\n                \"color\": \"#173177\"\n            }\n            ...\n            }\n        }\n}\nvar result = await wechatApi.sendMiniProgramTemplate(token, msg);\nconsole.log(result)\n\n```\n\n\n### 中间件\n\n商户服务端处理微信的回调（koa为例）\n```js\n// 支付成功异步回调\nrouter.use('/wxpay/paynotify',async function paynotify(ctx, next){\n    //获取微信推送数据\n    var result = await wechatApi.getWechatNoticeData(ctx.req);\n    //验证消息是否来自微信\n    var isWxMessage = await Wechat.WechatAuth(result);\n    //通知微信处理结果\n    await Wechat.responseSuccess(ctx,\"success\");//成功\n    await Wechat.responseFail(ctx,\"fail\"); //失败\n});\n\n// 退款异步回调\nrouter.use('/wxpay/refundnotify', async function refundnotify(ctx, next){\n    var result = await wechatApi.getRefundData(ctx.req);\n     //通知微信处理结果\n    await Wechat.responseSuccess(ctx,\"success\");//成功\n    await Wechat.responseFail(ctx,\"fail\"); //失败\n});\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fll89757%2Fwechat-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fll89757%2Fwechat-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fll89757%2Fwechat-node/lists"}