['id'=>34]]); $ret = (new \Library\Payment\Alipay($payment[0]['config']))->Respond(); file_put_contents(ROOT_PATH.'order-pay-notify-'.rand().'.txt', json_encode($ret)); die; if($data == 'no') exit('error'); // 开始处理支付信息 $m = M('Order'); $out_trade_no = substr($data['out_trade_no'], 0, -6); // 获取订单记录 $pay_order = $m->field('id,total_price,status,user_id,shop_id')->find($out_trade_no); // 不存在或已经支付则不处理 if(empty($pay_order) || $pay_order['status'] != 1) { exit('success'); } // 兼容web版本支付参数 $buyer_email = isset($data['buyer_logon_id']) ? $data['buyer_logon_id'] : (isset($data['buyer_email']) ? $data['buyer_email'] : ''); $total_amount = isset($data['total_amount']) ? $data['total_amount'] : (isset($data['total_fee']) ? $data['total_fee'] : ''); // 写入支付日志 $pay_log_data = [ 'user_id' => $pay_order['user_id'], 'order_id' => $out_trade_no, 'trade_no' => $data['trade_no'], 'user' => $buyer_email, 'total_fee' => $total_amount, 'amount' => $pay_order['total_price'], 'subject' => $data['subject'], 'pay_type' => 0, 'business_type' => 0, 'add_time' => time(), ]; M('PayLog')->add($pay_log_data); // 消息通知 $detail = '订单支付成功,金额'.PriceBeautify($pay_order['total_price']).'元'; CommonMessageAdd('订单支付', $detail, $pay_order['user_id']); // 开启事务 $m->startTrans(); // 更新支付状态 $where = array('id' => $out_trade_no); $upd_data = array( 'status' => 2, 'pay_status'=> 1, 'pay_price' => $total_amount, 'pay_time' => time(), 'upd_time' => time(), ); if($m->where($where)->save($upd_data)) { // 积分赠送 if($this->IntegralGiving($out_trade_no, $pay_order['user_id']) === true) { // 提交事务 $m->commit(); // 成功 exit('success'); } } // 事务回滚 $m->rollback(); // 处理失败 exit('error'); } /** * 积分赠送 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2018-06-20 * @desc description * @param [int] $order_id [订单id] * @param [int] $user_id [用户id] * @return [boolean] [true成功, false失败] */ private function IntegralGiving($order_id, $user_id) { return true; } } ?>