前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nodejs微信支付之申请退款

nodejs微信支付之申请退款

作者头像
OECOM
发布于 2020-07-01 08:53:41
发布于 2020-07-01 08:53:41
1.5K00
代码可运行
举报
文章被收录于专栏:OECOMOECOM
运行总次数:0
代码可运行

本文继续介绍nodejs接入微信支付,前面说过了统一下单和支付结果通知。下面再来说一下查询订单

查询订单

查询订单其实有了前两篇文章的介绍,基本上也没必要再多说了,基本上就是调用的问题,前面已经封装好了方法,这里说一下基本的步骤: - 构造参数,生成签名(使用exports.getWechatSign) - 将对象转换为xml格式(使用exports.json2xml) - 发起请求,发送xml格式(使用common.post_https_requestXml) - 接收xml格式数据(使用exports.parseReqXmlData) - 验签(使用exports.checkPayResultSign)

如此订单查询也就结束了,相关的方法在前两篇文章已经写过了,可自行前往查看。

申请退款

关于申请退款这个方法相对麻烦一点的就是需要双向证书,微信文档里说的是需要安装在本机上,其实使用nodejs并不需要安装,只需要在请求的时候进行相关的配置就可以了。需要注意的是使用nodejs需要的证书是p12后缀的证书。

其实相关的方法在统一下单里面说过了,在这里再介绍一遍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//封装post请求
exports.post_https_requestXml = function (urlstring, post_data, callback) {

    callback = callback || function () {
    };
    var urlData = url.parse(urlstring);
    var hostIP = urlData.host;
    if (urlData.host.indexOf(":") > 0) {
        hostIP = urlData.host.substr(0, urlData.host.indexOf(":"));
    }
    var options = {
        hostname: hostIP,
        port: urlData.port,
         path: urlData.path,
        method: 'POST',
    };
    if(post_data.agentOptions){
        options.pfx = post_data.agentOptions.pfx;
        options.passphrase = post_data.agentOptions.passphrase;
    }
    var req = https.request(options, function (res) {
        var body = "";
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            body += chunk;
        });
        res.on('end', function () {
            callback(body);
        });
    });
    req.on('error', function (e) {
        console.log('error:' + e.message);
        callback('');
    });
    req.write(post_data.body);
    req.end();
};

在请求的参数中添加上一个agentOptions参数,其中pfx为证书内容,passphrase为证书的密码,默认为商户号,调用方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 exports.refundRequest = (requestUrl,jsonxml,pwd)=>{
    return new Promise((resolve,reject)=>{
        fs.readFile(path.resolve(process.cwd(),"payCert/apiclient_cert.p12"),function(err,data){
            if(!err){
                let requestOptions = {
                    body:jsonxml,
                    agentOptions:{
                        pfx:data,
                        passphrase: pwd,
                    }
                };
                common.post_https_requestXml(requestUrl,requestOptions,async (xmlRes)=>{
                    try{
                        console.log(xmlRes);
                        if(xmlRes.indexOf("xml")>=0){
                            let ParaseXml= await exports.parseXml(xmlRes);
                            resolve(ParaseXml);
                        }else{
                            resolve({
                                success:false,
                                msg:xmlRes
                            });
                        }

                    }catch(e){
                        reject(e)
                    }
                })
            }else{
                reject(e)
            }
        });
    })

};

解决了双向证书的问题之后基本上流程和查询订单流程就差不多了,就不再赘述了。

后续将继续介绍微信支付的退款结果通知

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nodejs开发微信支付之统一下单
首先我们需要来看一下后台具体都需要做哪些功能: - 统一下单 - 接收订单结果通知 - 查询订单 - 申请退款 - 查询退款 - 退款结果通知接收
OECOM
2020/07/01
1.8K0
nodejs开发微信支付之接收退款申请通知
nodejs申请退款之后,微信服务器会将退款结果通知服务器,我们需要接收处理一下。特别说明:退款结果对重要的数据进行了加密,商户需要用商户秘钥进行解密后才能获得结果通知的内容。我不知道微信为什么单独要在这里进行加密处理,使得这个接口很麻烦,另外他给的解密步骤也很模糊:
OECOM
2020/07/01
1.5K0
【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)
微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全、便捷、专业的在线支付服务。以“微信支付,不止支付”为核心理念,为个人用户创造了多种便民服务和应用场景。微信支付为各类企业以及小微商户提供专业的收款能力,运营能力,资金结算解决方案,以及安全保障。用户可以使用微信支付来购物、吃饭、旅游、就医、交水电费等。企业、商品、门店、用户已经通过微信连在了一起,让智慧生活,变成了现实。
愚公搬代码
2022/10/31
9620
【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)
nodejs接收微信支付通知结果
在统一下单中讲到了微信支付的统一下单,统一下单完成后就是客户端的事情了,根据返回的信息来调起微信支付,完成付款。当付款完成后,微信服务器会post支付结果通知我们,此接口需要单独来写,并且需要按照微信文档的要求来返回数据。
OECOM
2020/07/01
1.6K0
Egg 中实现微信支付
2. 点击 微信支付商户平台 ,点击“接入微信支付”以便注册微信支付商户号,扫码验证后创建申请单、填写商户资料、提交申请后给官方审核,审核时间约为1到5个工作日。
越陌度阡
2021/08/24
1.3K0
[NodeJS]创建HTTP、HTTPS服务器与客户端
当从客户端请求流中读取到数据时会触发data事件,当读取完客户端请求流中的数据时触发end事件。
奋飛
2019/08/15
5.5K0
Express与JS-SDK实现微信支付
在微信开发中,最复杂的莫过于微信支付流程了,前端、服务端、微信平台要通过一系列的交互才能成功支付,官方 文档也不是很友好,下面这张图就是来自官方文档的,是不是感觉特别复杂。
越陌度阡
2020/11/26
6.2K0
Express与JS-SDK实现微信支付
微信支付-Java-SpringMVC基础一些代码支持
官网文档和demo代码下载地址 https://mp.weixin.qq.com/htmledition/res/bussiness-faq/wx_app_pay.zip 1. 基础常量代码 package com.xiaoshuai.util; /** * 配置类 * @author 小帅帅 * @date 2016-7-5下午01:40:53 */ public class ConfigUtil { /** * 服务号相关信息 */ public final static S
小帅丶
2018/02/08
1.9K0
微信支付-Java-SpringMVC基础一些代码支持
Vue+koa2开发一款全栈小程序(7.图书录入功能)
1.图书录入功能 1.获取图书信息 1.在mydemo/src/until.js中封装工具函数post和get // 工具函数 import config from './config' // http get工具函数 获取数据 export function get (url,data) { return request(url,'GET',data) } export function post (url,data) { return request(url,'POST',data) }
玩蛇的胖纸
2018/10/18
7690
Vue+koa2开发一款全栈小程序(7.图书录入功能)
【愚公系列】2022年10月 微信小程序-电商项目-小微商户支付后端功能实现(node版)
微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全、便捷、专业的在线支付服务。以“微信支付,不止支付”为核心理念,为个人用户创造了多种便民服务和应用场景。微信支付为各类企业以及小微商户提供专业的收款能力,运营能力,资金结算解决方案,以及安全保障。用户可以使用微信支付来购物、吃饭、旅游、就医、交水电费等。企业、商品、门店、用户已经通过微信连在了一起,让智慧生活,变成了现实。
愚公搬代码
2022/10/31
6930
使用nodejs爬取拉勾苏州和上海的.NET职位信息
最近开始找工作,本人苏州,面了几家都没有结果很是伤心。在拉勾上按照城市苏州关键字.NET来搜索一共才80来个职位,再用薪水一过滤,基本上没几个能投了。再加上最近苏州的房价蹭蹭的长,房贷压力也是非常大,所以有点想往上海去发展。闲来无聊写了个小爬虫,爬了下苏州跟上海的.NET职位的信息,然后简单对比了一下。
MJ.Zhou
2022/05/07
4710
使用nodejs爬取拉勾苏州和上海的.NET职位信息
【nodejs】手写简易版 koa 及常用中间件
首先我们要实现 koa 的 use 和 listen 方法,我们这样使用 MyKoa。
一尾流莺
2022/12/10
7860
【nodejs】手写简易版 koa 及常用中间件
使用http维持socket长连接
用户1141560
2017/12/22
1.5K0
使用nodejs和express搭建http web服务
nodejs作为一个优秀的异步IO框架,其本身就是用来作为http web服务器使用的,nodejs中的http模块,提供了很多非常有用的http相关的功能。
程序那些事
2021/01/13
2.1K0
手把手教你完成App支付JAVA微信支付
这篇内容看标题已经很明确了,由于微信是用xml通讯的,所以这一点比较恶心,各位可能需要在项目里导入一些解析xml的包。 首先放出工具类(包含支付宝用到的工具类),因为现在csdn下载都是扣积分的,因为工具类代码会在文尾贴出。
Java编程指南
2019/08/02
2.5K0
手把手教你完成App支付JAVA微信支付
Vue.js+node实现微信支付(沙箱)完整版,亲测可用
demo 请狠狠的戳这里 https://download.lllomh.com/cliect/#/product/J302779150521235
芈渡
2021/03/09
1.3K0
Vue.js+node实现微信支付(沙箱)完整版,亲测可用
一篇文章构建你的 NodeJS 知识体系(W字长文)
最近读《重学前端》,开篇就是让你拥有自己的知识体系图谱,后续学的东西补充到相应的模块,既可以加深对原有知识的理解,又可以强化记忆,很不错的学习方案。
coder_koala
2020/08/27
2K0
nodejs实现简单的自动约车
最近约车真是越来越难了,网上约车经常车位刚放出来便已空空如也。突然回想起之前学车时教练反复提到的约车软件,去淘宝上一查:我去,卖出去一千多份了!还能约到车那就是有鬼了……此刻我深深怀疑这个软件是他们自家开发的,贵圈水真深。然而作为一名程序猿的尊严是不允许我去买这软件的……于是花了一天捣鼓出来一个极其简陋的约车系统,虽然因为官方网站对这方面的限制很多,效果并不是很好,不过试用了一下淘宝的爆款约车软件基本确定原理相同,那么就满足了吧……(挽尊可矣)
星回
2018/08/02
1.1K0
微信小程序支付
微信小程序支付 首先申请微信支付商户号并关联微信小程序 1583065647497-60a54eb3-d5f4-4931-b6d0-f71ef5d40254.png 1583065739033-2bebe181-6525-4811-829a-6aa552009f02.png 准备订单参数 // Order.js 架构 const mongoose = require('mongoose'); const Order = new mongoose.Schema({ openid: {
4O4
2022/04/25
1.3K0
微信小程序支付
Nodejs编写爬虫处理乱码详解
我们准备两个目标网站:第一个是网页编码格式为utf8的百度https://www.baidu.com/,如何查看目标网站的编码格式呢?只需要查看查看网页源代码就可以了,如图:
挥刀北上
2019/08/06
2.1K0
Nodejs编写爬虫处理乱码详解
推荐阅读
相关推荐
nodejs开发微信支付之统一下单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验