jh-admin/addon/supply/v1/OrderPay.php

95 lines
3.5 KiB
PHP

<?php
namespace addon\supply\v1;
use addon\supply\model\order\OrderCommon;
use addon\supply\model\SupplyAccount;
class OrderPay extends ApiBase
{
public function getPay($data = [])
{
$out_trade_no = input('outTradeNo');
if (empty($out_trade_no)) {
return error(-1, '订单号不能为空');
}
$field = 'site_id,order_id,goods_money,buyer_shop_id,pay_status';
$condition = [
'out_trade_no' => $out_trade_no,
'buyer_uid' => $this->appInfo['id'],
];
$order_list = model('supply_order')->getList($condition, $field);
if (empty($order_list)) {
return error(-1, '订单不存在或交易已关闭');
}
$pay_status = $order_list[0]['pay_status'];
if ($pay_status == 1) {
return error(-1, '订单已支付');
}
$balance_money = array_sum(array_column($order_list, 'goods_money'));
$data = [
'outTradeNo' => $out_trade_no,
'orderMoney' => $balance_money,
'QrPayUrl' => '',
'onlinePayUrl' => addon_url('supply://shop/pay/pay', ['out_trade_no' => $out_trade_no]),
];
return $data;
}
/***
* 发起余额扣款
* @param $data
* @return void
*/
public function pbalancePay()
{
$out_trade_no = input('outTradeNo');
if (empty($out_trade_no)) {
return error(-1, '订单号不能为空');
}
$payType = input('payType', 'balance');
$condition = [
'out_trade_no' => $out_trade_no,
'buyer_uid' => $this->appInfo['id'],
];
model('supply_account')->startTrans();
try {
if ($payType == 'balance') {
$field = 'site_id,order_id,goods_money,buyer_shop_id,pay_status';
$order_list = model('supply_order')->getList($condition, $field);
if (empty($order_list)) {
return error(-1, '订单不存在或交易已关闭');
}
$buyer_shop_id = $order_list[0]['buyer_shop_id'];
$pay_status = $order_list[0]['pay_status'];
if ($pay_status == 1) {
return error(-1, '订单已支付');
}
$balance_money = array_sum(array_column($order_list, 'goods_money'));
if ($this->appInfo['usable_price'] < $balance_money) {
return error(-1, '余额不足');
}
$member_account_model = new SupplyAccount();
$order_model = new OrderCommon();
$result = $member_account_model->AddAppsAccount($buyer_shop_id, $this->appInfo['id'], 'usable_price', -$balance_money, 'buy_order', $out_trade_no, $out_trade_no . '订单消费扣除');
$isPay = $result['data'];
if ($result['code'] == 0) {
$res = $order_model->orderOnlinePay(['out_trade_no' => $out_trade_no, 'pay_type' => 'BALANCE']);
}
model('supply_account')->commit();
$data = [
'code' => 0,
'outTradeNo' => $out_trade_no,
'isPay' => 1,
'msg' => '扣款成功',
];
return $data;
} else if ($payType == 'withhold') {
return error(-1, '暂未开放');
}
} catch (\Exception $e) {
model('supply_account')->rollback();
return error(-1, $e->getMessage());
}
}
}