nodejs 微信支付

微信支付要在微信公众平台配置 微信授权目录和微信回调目录


微信授权目录 是你支付时收集支付数据的目录,只有授权目录才能支付。 
微信支付之前要进行用户授权

router.js

var express = require('express');
var router = express.Router();
var OAuth = require('wechat-oauth');
var client = new OAuth(config.wx_appid, config.wx_secret);

var middleware = require('wechat-pay').middleware;
var Payment = require('wechat-pay').Payment;
var initConfig = {
    partnerKey: config.wechat.partnerKey,
    appId: config.wechat.appId,
    mchId: config.wechat.mchId,
    notifyUrl: "http://xxxxxxxxxxxxxx/notify/",
    pfx: fs.readFileSync("apiclient_cert.p12")
   
};
var payment = new Payment(initConfig);

/**
 * 支付授权
 * state 传递的参数 
 **/
router.get('/auth', function(req, res){
		var url = client.getAuthorizeURL('http://xxxxxxx/支付授权目录',state, 'snsapi_userinfo');
		res.redirect(url);

});

/**
 * 支付
 **/
router.get('/支付授权目录', function(req, res) {


    client.getAccessToken(code, function (err, result) {
        var openid = result.data.openid;
        var order = {
            body: '微信支付',
            attach: '微信支付',
            out_trade_no: '订单号(自己生成的,支付成功微信会返回)',
            total_fee: '支付金额(单位是分)',
            spbill_create_ip: '服务器ip',
            openid: '微信支付的openid',
            trade_type: 'JSAPI'
        };
        payment.getBrandWCPayRequestParams(order, function(err, payargs){
            if(err) {
                log.error(err);
            }


            res.render('微信支付付款页面', {
                appId: payargs.appId,
                timeStamp: payargs.timeStamp,
                nonceStr: payargs.nonceStr,
                package: payargs.package,
                signType: payargs.signType,
                paySign: payargs.paySign,
                body:body,
                total:total,
                num:num,
                proname:project_name,
                state:state

            });
        });
    });
});



/**
* 微信支付回调
*(点击支付后微信回调的目录)
*/
router.post('/notify', middleware(initConfig).getNotify().done(function(message, req, res, next) {
	 console.log(message);//微信返回的数据
		 if(message.return_code == 'SUCCESS' && message.result_code == 'SUCCESS'){
			 
			 //这里你可以写支付成功后的操作
		 
		 }

}));


// 导出
module.exports = router;

支付付款页面

pay.html


 



你可能感兴趣的:(nodejs)