带着准备好的数据,请求微信支付的统一下单接口,会返回预支付相关的信息。这个请求的时候要带的数据,要转换成 xml 格式的 .. 先去安装一个可以转换 xml 格式数据的包 ..
回到命令行 .. 在项目下面,执行一下:
npm install xml-js --save
这个包可以把对象转换成 xml 格式,也可以把 xml 格式的数据转换成 JavaScript 的对象 .. 回到控制器 .. 先导入刚才安装的包 .. 名字可以叫 convert .. 用一下 xml-js 这个模块 ..
在控制器的 render 方法里,可以重新再设置一下 order 的值 .. 一个对象 .. 里面先添加一个 xml 属性,这样把这个对象转换成 xml 格式数据的时候,这个 xml 属性会转换成一个 xml 的标签 ..
它里面包装的又是一个对象 .. 然后把之前的 order 对象里的东西放进来 .. 注意这里我用了一个 spread 操作符 .. 版本太低的 node 不支持使用这个操作符 ..
我现在用的 node 是 9.4 .. 如果你发现自己用的是 8.x 的 node,可以升级一下 .. 不然会报错 ..
后面再加上生成的签名 .. 这里就是 sign .. 签名里的值之前我们已经创建好了 ..
下面再去把这个对象转换成 xml .. 添加一个 xmlOrder .. 它的值用一下 convert 里的 js2xml 这个方法 .. 它可以把对象转换成 xml 格式的数据 .. 要转换的对象是 order .. 再添加一个配置选项 .. 把 compact 设置成 true ..
可以再检查一下转换之后的这个结果 .. logger.debug ,输出 xmlOrder .. 回到浏览器 .. 刷新一下 checkout 页面 ..
再打开 app.log ...
这里显示的就是转换成 xml 格式之后的数据 .. 我们要把这个数据发送给微信支付的统一下单接口,去换取预支付相关的数据 ...