lrf 2 年之前
父节点
当前提交
9206923b9b
共有 2 个文件被更改,包括 25 次插入7 次删除
  1. 1 3
      app/controller/trade/pay.js
  2. 24 4
      app/service/trade/pay.js

+ 1 - 3
app/controller/trade/pay.js

@@ -17,9 +17,7 @@ class PayController extends Controller {
   }
 
   async callBackPayOrder() {
-    console.log(this.ctx.request);
-    console.log(this.ctx.request.body);
-    await this.service.callBackPayOrder(this.body);
+    await this.service.callBackPayOrder(this.ctx.request.body);
     this.ctx.ok();
   }
 }

+ 24 - 4
app/service/trade/pay.js

@@ -86,11 +86,31 @@ class PayService extends CrudService {
 
   /**
    * 支付订单回调函数
-   * @param {Object} param 请求地址参数
-   * @param param.order 订单id
+   * @param {Object} body 请求地址参数
+   * @param body.result 支付回调结果
    */
-  async callBackPayOrder({ order }) {
-    console.log(order);
+  async callBackPayOrder({ result }) {
+    const { out_trade_no, payer } = result;
+    // TODO: 没有需要报警,没有订单号就出问题了
+    if (!out_trade_no) {
+      console.error('没有支付订单号');
+      return;
+    }
+    const arr = out_trade_no.split('-');
+    const noPart = _.last(arr);
+    const openid = _.get(payer, 'openid');
+    let orderData = await this.orderModel.findOne({ no: new RegExp(`${noPart}`), 'pay.openid': openid });
+    // TODO: 没找到订单也是有问题的,需要报警
+    if (!orderData) {
+      console.error('没有找到订单');
+      return;
+    }
+    orderData = JSON.parse(JSON.stringify(orderData));
+    const payData = _.get(orderData, 'pay', {});
+    // 支付结果全都存起来
+    payData.result = result;
+    // 修改状态
+    await this.orderModel.updateOne({ no: new RegExp(`${noPart}`), 'pay.openid': openid }, { pay: payData, status: '1' });
   }
 
   /**