95 lines
3.5 KiB
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());
|
|
}
|
|
}
|
|
}
|