您的位置:首页 > 移动开发 > 微信开发

nodejs 微信支付

2015-04-23 10:23 495 查看
微信支付要在微信公众平台配置 微信授权目录和微信回调目录

微信授权目录 是你支付时收集支付数据的目录,只有授权目录才能支付。 

微信支付之前要进行用户授权

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

<button type="button" class="btn" onclick="goPay('<%= appId %>','<%= timeStamp %>', '<%= nonceStr %>', '<%= package %>', '<%= signType %>', '<%= paySign %>');">微信支付</button>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
function goPay(appId, timeStamp, nonceStr, package, signType, paySign) {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId" : appId,
"timeStamp":timeStamp,
"nonceStr" : nonceStr,
"package" : package,
"signType" : signType,
"paySign" : paySign
}, function(res){
if(res.err_msg == "get_brand_wcpay_request:ok"){
alert("支付成功");

}else{
alert("支付失败,请重试");
}
});
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信支付