| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace app\api\service;
- use app\common\model\MemberCoinInfo;
- use app\common\model\MemberCoinPay;
- use app\common\model\Members;
- use think\Db;
- class PayNotifyService
- {
- /**
- * 更新订单信息
- *
- * @param string $orderid :订单编号
- * @param string $real_amount :第三方支付的金额(现金部分)
- *
- * @return boolean
- */
- public function updateOrderCoin($orderid, $real_amount = 0, $callback_order = '', $currency = 'CNY')
- {
- $memberCoinPayModel = new MemberCoinPay();
- $membersModel = new Members();
- $result = false;
- //消费订单信息
- $payInfo = $memberCoinPayModel->field('id,userid,orderid,amount,real_amount,status')->where(['orderid' => $orderid])->find();
- if ($payInfo['status'] == 1 && $payInfo['real_amount'] == $real_amount) {
- return true;
- }
- if ($real_amount != '' && $payInfo['real_amount'] != $real_amount) {
- $result = false;
- //写入日志
- log_message('订单编号:' . $orderid . '支付金额不一致,订单状态更新失败', 'error', LOG_PATH . '../paylog/');
- } //待支付状态时
- elseif ($payInfo['status'] == 0) {
- // 启动事务
- Db::startTrans();
- try {
- $memberCoinPayModel->where(['id' => $payInfo['id']])->update(['status' => 1, 'pay_time' => NOW_TIMESTAMP, 'callback_order' => $callback_order, 'currency'=> $currency]);
- $members = $membersModel->field('id,amount')->where('id', $payInfo['userid'])->find();
- $coinData = [
- 'userid' => $payInfo['userid'],
- 'orderid' => $payInfo['orderid'],
- 'start_amount' => $members['amount'],
- 'amount' => $payInfo['amount'],
- 'result_amount' => priceFormat($members['amount'] + $payInfo['amount']),
- 'type' => 1,
- 'remarks' => '平台币充值',
- 'create_time' => NOW_TIMESTAMP,
- ];
- $memberCoinInfoModel = new MemberCoinInfo();
- if (!$memberCoinInfoModel->insertGetId($coinData)) {
- Db::rollback();
- return false;
- }
- if (!$membersModel->where('id', $payInfo['userid'])->update(['amount' => priceFormat($members['amount'] + $payInfo['amount'])])) {
- Db::rollback();
- return false;
- }
- // 提交事务
- Db::commit();
- return true;
- } catch (\Exception $e) {
- // 回滚事务
- Db::rollback();
- //写入日志
- log_message('订单编号:' . $orderid . '订单状态更新失败' . $e->getMessage(), 'error', LOG_PATH . '../paylog/');
- }
- }
- return false;
- }
- }
|