1.流程
wx.request 向服务器请求支付参数
服务器根据客户端的 sessionId , 找到 它的 openId, 将它和商家自己的 appId, appSecret, PAY_API_KEY和商品的一系列等信息加密, 去请求微信的服务器
微信的服务器向商家服务器返回这次交易需要的数据
商家服务器处理上述数据, 返回给用户端
用户端接收到数据, 调用 wx.requestPayment 接口
微信服务器主动向商家的服务器发送本次支付的信息(是否成功等)
2.注意点
二次签名和重要,对于第一次开发支付的童靴们来说,是一个很大的坑,千万要注意二次签名。
3.直接上我的源码(dome示例)
var express = require('express');
var router = express.Router();
var request = require('request');
const axios = require('axios')
const md5 = require('md5')
const xml2js = require('xml2js')
const xmlParser = new xml2js.Parser()
const appId = '你的appid'
const appSecret = "你的appSecret"
// 商户号
const mchId = 'xxxxxx'
// 支付的 key
const PAY_API_KEY = 'fernTpqRaPDjuW1qRBqZaly7Bh6DMFJH'
var app = express();
//解决跨域问题
app.all('*', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
var nonce_str;//在统一下单时生成的唯一的随机字符串
var out_trade_no;//在统一下单时生成的唯一的随机订单号
// var sign=querySign(appid,mch_id,nonce_str,out_trade_no);//查询签名,传参需要注意
router.post('/secc', function (req, res, next) {
var query = req.body;
console.log("post请求:参数", query);
var formData = "";
formData += ""+appId+""; //appid
formData += ""+mchId+""; //商户号
formData += ""<