文件
mashangyoujiu/Application/CashierApi/Business/QueryPayOrder.class.php

988 行
34 KiB
PHP
可执行文件

<?php
namespace CashierApi\Business;
use Common\Business\BillOrder;
use Common\Business\PayCoupon;
use Common\Business\PaySet;
use Pay\Controller\CloudPayController;
use Pay\Library\Cloud\Cloud as CloudObj;
//[1.9.5]
/**
* 查询支付订单类
* Class QueryPayOrder
* [
* 购买次卡查询支付订单 cardQueryOrder
* 会员充值支付订单状态并执行回调 rechargeQueryOrder
* 会员充值支付订单状态并之心回调的参数验证 rechargeVerify
* 购买商品支付订单状态并执行回调 queryOrder
* 查询支付订单状态并执行回调的验证 queryOrderVerify
* 查询微信支付订单 wxQueryOrder
* 查询支付宝订单 zfbQueryOrder
* 查询新大陆支付订单 xDLQueryOrder
* 查询云闪付订单 yunQueryOrder
* 支付成功回调处理分润 payPaymentBack
* 微信支付成功回调处理分润 wxPaymentBack
* 支付宝支付成功回调处理分润 zfbPaymentBack
* 新大陆支付成功回调处理分润 xDLPayPaymentBack
* 云闪付支付成功回调处理分润 yunPaymentBack
* 查询订单信息流水信息支付设置 searchInfo
* 获取商户支付模式及权限 getPayConfig
*
* ]
* @package CashierApi\Business
*/
class QueryPayOrder
{
/**
* 购买次卡查询支付订单
* @param $param
* [
* merchant_id
* pay_order_id 流水id
* ]
* @return mixed
* [
* pay_channel 支付渠道 1微信 2支付宝 3新大陆 4云闪付
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到第三方返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* payment_status 0回调失败 1回调完成 2请继续支付
* data 返回的前端所需的信息
* ]
*/
public function cardQueryOrder($param)
{
if (empty($param['pay_order_id'])) {
return callBack(statusCode()['error'], "缺少流水唯一标识");
}
$payOrderResult = $this->searchPayOrder($param['pay_order_id']);
if ($payOrderResult['status'] != 1) {
return $payOrderResult;
}
$pay_order = $payOrderResult['data']; //流水信息
if ($pay_order['order_state'] == 'SUCCESS') {
$res = [
'status' => 1,
'result_code' => 1,
'return_code' => 1,
'payment_status' => 1,
];
return callBack(statusCode()['error'], '支付成功', $res);
}
if (!in_array($pay_order['pay_type'], ['1', '2'])) {
return callBack(statusCode()['error'], "未知的支付类型");
}
$paySetResult = $this->getPayConfig($param['merchant_id'], $pay_order['pay_type']);
if ($paySetResult['status'] != 1) {
return $paySetResult;
}
$config = $paySetResult['data']['config']; //支付设置
$result = $this->getThirdPayState([
'pay_order' => $pay_order,
'config' => $config
]); //返回的支付状态信息
return $result;
}
/**
* 会员充值支付订单状态并之心回调
* @param $param
* [
* merchant_id
* store_id
* cashier_id
* pay_order_id 流水id
* recharge_id 活动id
* ]
* @return mixed
* [
* pay_channel 支付渠道 1微信 2支付宝 3新大陆 4云闪付
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到第三方返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* payment_status 0回调失败 1回调完成 2请继续支付
* data 返回的前端所需的信息
* ]
*/
public function rechargeQueryOrder($param)
{
$verify = $this->rechargeVerify($param); //参数验证
if ($verify['status'] != 1) {
return $verify;
}
$payOrderResult = $this->searchPayOrder($param['pay_order_id']);
if ($payOrderResult['status'] != 1) {
return $payOrderResult;
}
$pay_order = $payOrderResult['data']; //流水信息
if ($pay_order['order_state'] == 'SUCCESS') {
$res = [
'status' => 1,
'result_code' => 1,
'return_code' => 1,
'payment_status' => 1,
];
return callBack(statusCode()['success'], '支付成功', $res);
}
$paySetResult = $this->getPayConfig($param['merchant_id'], $pay_order['pay_type']);
if ($paySetResult['status'] != 1) {
return $paySetResult;
}
$config = $paySetResult['data']['config']; //支付设置
$result = $this->getThirdPayState([
'merchant_id' => $param['merchant_id'],
'store_id' => $param['store_id'],
'recharge_id' => $param['recharge_id'],
'pay_order' => $pay_order,
'config' => $config
]); //返回的支付状态信息
return $result;
}
/**
* 会员充值支付订单状态并之心回调的参数验证
* @param $param
* [
* merchant_id
* store_id
* cashier_id
* pay_order_id 流水id
* ]
* @return mixed
*/
public function rechargeVerify($param)
{
if (empty($param['merchant_id']) || empty($param['store_id']) || empty($param['cashier_id'])) {
return callBack(statusCode()['error'], "未知的收银员");
}
if (empty($param['pay_order_id'])) {
return callBack(statusCode()['error'], "缺少订单必要参数");
}
return callBack(statusCode()['success'], "验证成功");
}
/**
* 购买商品支付订单状态并执行回调
* @param $param
* [
* merchant_id
* store_id
* cashier_id
* bill_id 订单id
* pay_order_id 流水id
* pay_money 支付金额
* amount_received 实收金额
* ]
* @return mixed
* [
* pay_channel 支付渠道 1微信 2支付宝 3新大陆 4云闪付
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到第三方返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* payment_status 0回调失败 1回调完成 2请继续支付
* data 返回的前端所需的信息
* ]
*/
public function queryOrder($param)
{
$verifyResult = $this->queryOrderVerify($param); //验证参数
if ($verifyResult['status'] != 1) {
return $verifyResult;
}
$infoResult = $this->searchInfo($param); //查询流水信息订单信息支付配置
if ($infoResult['status'] != 1) {
return $infoResult;
}
if (!in_array($infoResult['data']['pay_order']['pay_type'], ['1', '2'])) {
return callBack(statusCode()['error'], "未知的支付类型");
}
$pay_order = $infoResult['data']['pay_order']; //流水信息
$billOrder = $infoResult['data']['bill_order']; //订单信息
$config = $infoResult['data']['config']; //支付配置
$pay_money = $param['pay_money'];
$amount_received = $param['amount_received'];
if ($pay_order['order_state'] == 'SUCCESS' && $billOrder['pay_state'] == 1) {
$res = [
'status' => 1,
'result_code' => 1,
'return_code' => 1,
'payment_status' => 1,
];
return callBack(statusCode()['error'], "支付成功", $res);
}
$result = $this->getThirdPayState([
'pay_order' => $pay_order,
'config' => $config,
'pay_money' => $pay_money,
'amount_received' => $amount_received,
'billOrder' => $billOrder
]); //返回信息
return $result;
}
/**
* 查询微信支付订单
* @param $pay_order 流水信息
* @param $config 支付配置
* @return mixed
* [
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到微信返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* payInfo 微信返回的信息
* ]
*/
public function wxQueryOrder($pay_order, $config)
{
$status = 1;
$return_code = 0;
$wxResult = A('Pay/NewWxPay')->searchWxOrder_v3($pay_order, $config);
if (!empty($wxResult)) {
if ($wxResult['return_code'] == 'SUCCESS' && $wxResult['result_code'] == "SUCCESS") {
$return_code = 1;
if (!empty($pay_order['face_token'])) {
//刷脸
switch ($wxResult['trade_state']) {
case "SUCCESS":
$result_code = 1;
break;
case "REVOKED":
$result_code = 4;
break;
case "REFUND":
$result_code = 6;
break;
case "PAYERROR":
$result_code = 0;
break;
case "TRADE_PAYING":
$result_code = 2;
break;
default:
$return_code = 2;
break;
}
} else {
//码支付
switch ($wxResult['trade_state']) {
case "USERPAYING":
$result_code = 2;
break;
case "SUCCESS":
$result_code = 1;
break;
case "PAYERROR":
$result_code = 0;
break;
case "REVOKED":
$result_code = 4;
break;
case "REFUND":
$result_code = 6;
break;
default:
$return_code = 2;
break;
}
}
} else {
$return_code = 3;
}
}
$result['status'] = $status;
$result['return_code'] = $return_code;
$result['result_code'] = $result_code ? $result_code : 0;
$result['payInfo'] = $wxResult;
return $result;
}
/**
* 查询支付宝订单
* @param $pay_order
* @param $config
* @return mixed
* [
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到支付平台返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* payInfo 微信返回的信息
* ]
*/
public function zfbQueryOrder($pay_order, $config)
{
$status = 1;
$return_code = 0;
$zfbResult = A('Pay/NewAliPay')->inquireOrder_v3($pay_order, $config);
if (!empty($zfbResult)) {
if ($zfbResult['status'] == 1) {
$return_code = 1;
switch ($zfbResult['trade_status']) {
case 'WAIT_BUYER_PAY':
$result_code = 2;
break;
case 'TRADE_SUCCESS':
$result_code = 1;
break;
case 'TRADE_CLOSED':
case 'TRADE_FINISHED':
if ($pay_order['order_state'] == 'REVOKED') {
$result_code = 4;
} else {
$result_code = 0;
}
break;
default:
$return_code = 2;
break;
}
} else {
$return_code = 3;
}
} else {
$return_code = 0;
}
$result['status'] = $status;
$result['return_code'] = $return_code;
$result['result_code'] = $result_code ? $result_code : 0;
$result['payInfo'] = $zfbResult;
return $result;
}
/**
* 查询新大陆支付订单
* @param $out_trade_no 订单内部流水号
* @param $merchant_id
* @param $add_time
* @return mixed
* [
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* dlInfo 返回的支付信息
* ]
*/
public function xDLQueryOrder($out_trade_no, $merchant_id, $add_time)
{
$status = 1;
$return_code = 0;
$daLuResult = A('Pay/PayContinent')->QryBarcode($out_trade_no, $merchant_id, $add_time);
file_put_contents('./xdlLinePay.txt', date('Y-m-d H:i:s') . json_encode($daLuResult), FILE_APPEND);
if ($daLuResult['returnCode'] == '000000') {
$return_code = 1;
switch ($daLuResult['result']) {
case 'A':
$result_code = 2;
break;
case 'S':
$result_code = 1;
break;
default:
$result_code = 0;
break;
}
} else if ($daLuResult['returnCode'] == '000035') {
$return_code = 1;
} else {
$return_code = 3;
}
$result['status'] = $status;
$result['return_code'] = $return_code;
$result['result_code'] = $result_code ? $result_code : 0;
$result['payInfo'] = $daLuResult;
return $result;
}
/**
* 查询云闪付订单
* @param $out_trade_no
* @param $pay_type
* @param $config
* @return mixed
* [
* status 0发出请求失败 1 发出请求成功
* return_code 0未收到返回信息 1返回成功 2返回未知状态 3查询失败
* result_code 0支付失败|撤销支付失败 1 支付成功 2支付中 3撤销中 4撤销支付成功 6转入退款
* dlInfo 返回的支付信息
* ]
*/
public function yunQueryOrder($out_trade_no, $pay_type, $config)
{
$status = 1;
$return_code = 0;
switch ($pay_type) {
case 1:
$wechat = 'wechat';
break;
case 2:
$wechat = 'alipay';
break;
}
$CloudPayController = new CloudPayController();
$data = $CloudPayController->retailPayConfigToCloudPayConfig($config);
$yun = new CloudObj($data);
$yunResult = $yun->queryOrder_v1($out_trade_no, $wechat);
if (!empty($yunResult)) {
if ($yunResult['respCode'] == '00') {
$return_code = 1;
switch ($yunResult['origRespCode']) {
case '00':
$result_code = 1;
break;
case '01':
$result_code = 6;
break;
case '02':
case '05':
$result_code = 2;
break;
case '03':
case '06':
$result_code = 0;
break;
case '04':
$result_code = 4;
break;
default:
$return_code = 2;
break;
}
} else {
$return_code = 3;
}
} else {
$return_code = 0;
}
$result['status'] = $status;
$result['return_code'] = $return_code;
$result['result_code'] = $result_code ? $result_code : 0;
$result['payInfo'] = $yunResult;
return $result;
}
/**
* 支付成功回调处理分润
* @param $pay_channel 支付渠道 1微信 2支付宝 3新大陆 4云闪付
* @param $payInfo 支付成功返回的信息
* @param $pay_order 流水信息
* @param $config 支付配置
* @return array
*/
public function payPaymentBack($pay_channel, $payInfo, $pay_order, $config = [])
{
switch ($pay_channel) {
case 1:
$upData = $this->wxPaymentBack($pay_order, $config, $payInfo);
break;
case 2:
$upData = $this->zfbPaymentBack($pay_order, $config, $payInfo);
break;
case 3:
$upData = $this->xDLPayPaymentBack($pay_order, $payInfo);
break;
case 4:
$upData = $this->yunPaymentBack($config, $payInfo, $pay_order);
break;
case 5:
//乐返
$upData = $this->happyPaymentBack($config, $payInfo, $pay_order);
break;
case 6:
//拉卡拉
$upData = $this->laKaLaPaymentBack($config, $payInfo, $pay_order);
break;
case 7:
//钱客云
$upData = $this->moneyGuestPaymentBack($config, $payInfo, $pay_order);
break;
}
return $upData;
}
/**
* 微信支付成功回调处理分润
* @param $pay_order
* @param $config
* @param $payInfo
* @return array
*/
public function wxPaymentBack($pay_order, $config, $payInfo)
{
if ($pay_order['m_pay_type'] == 1) {
$mch_id = $config['wx_mch_id'];
} else {
//子商户号
$mch_id = $config['wx_sub_mchid'];
}
$upData = [
'trade_no' => $payInfo['transaction_id'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $mch_id,
];
if ($payInfo['coupon_count'] > 0) {
//使用了代金券
$PayCouponClass = new PayCoupon();
$result = $PayCouponClass->couponVerification_v1(json_encode([
'pay_info' => $payInfo,
'use_type' => $pay_order['order_type'],
'order_id' => $pay_order['bill_id'] ? $pay_order['bill_id'] : $pay_order['id'],
'store_id' => $pay_order['store_id'],
'use_scene' => 2,
'merchant_id' => $pay_order['merchant_id'],
'coupon_way'=>1 //核销
]));//修改代金券使用状态
if ($result['status'] == 1) {
$upData['pay_coupon_id_str'] = $result['data']['pay_coupon_id_str']; //代金券id拼接
$upData['pay_coupon_fee'] = $result['data']['pay_coupon_fee'];//代金券优惠总金额
}
}
if ($pay_order['m_pay_type'] == 2) {
A('Pay/Base')->doAddRate($payInfo['transaction_id'], $pay_order, 2);//分润
}
return $upData;
}
/**
* 支付宝支付成功回调处理分润
* @param $pay_order
* @param $config
* @param $payInfo
* @return array
*/
public function zfbPaymentBack($pay_order, $config, $payInfo)
{
if ($pay_order['m_pay_type'] == 1) {
$mch_id = $config['alipay_appid'];
} else {
if (!empty($config['alipay_sellerid'])) {
$mch_id = $config['alipay_sellerid'];
} else {
$mch_id = $config['alipay_token'];
}
}
$upData = array(
'trade_no' => $payInfo['trade_no'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $mch_id
);
if ($pay_order['m_pay_type'] == 2) {
A('Pay/Base')->doAddRate($payInfo['trade_no'], $pay_order, 1);//分润
}
return $upData;
}
/**
* 新大陆支付成功回调处理分润
* @param $pay_order
* @param $payInfo
* @return mixed
*/
public function xDLPayPaymentBack($pay_order, $payInfo)
{
$upData['trade_no'] = $payInfo['orderNo'];
$upData['order_state'] = 'SUCCESS';
$upData['trade_date'] = time();
$upData['extend_content'] = json_encode($payInfo);
A('Pay/PayContinent')->doAddRate($payInfo['orderNo'], $pay_order, 3);
return $upData;
}
/**
* 云闪付支付成功回调处理分润
* @param $config
* @param $payInfo
* @param $pay_order
* @return array
*/
public function yunPaymentBack($config, $payInfo, $pay_order)
{
A('Pay/PayContinent')->doAddRate($payInfo['transIndex'], $pay_order, 4);
$upData = [
'trade_no' => $payInfo['transIndex'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $config['cloud_mer_id']
];
return $upData;
}
/**
* 乐返支付成功回调处理分润
* @param $config
* @param $payInfo
* @param $pay_order
* @return array
*/
public function happyPaymentBack($config, $payInfo, $pay_order)
{
A('Pay/PayContinent')->doAddRate($payInfo['data']['batch'], $pay_order, 5);
$upData = [
'trade_no' => $payInfo['data']['batch'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $config['happy_pay_num'],//乐返商户编号
];
return $upData;
}
/**
* 拉卡拉支付成功回调处理分润
* @param $config
* @param $payInfo
* @param $pay_order
* @return array
*/
public function laKaLaPaymentBack($config, $payInfo, $pay_order)
{
A('Pay/PayContinent')->doAddRate($payInfo['respData']['tradeNo'], $pay_order, 6);
$upData = [
'trade_no' => $payInfo['respData']['tradeNo'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $config['lakala_pay_num'],//拉卡拉商户编号
];
return $upData;
}
/**
* 钱客云支付成功回调处理分润
* @param $config
* @param $payInfo
* @param $pay_order
* @return array
*/
public function moneyGuestPaymentBack($config, $payInfo, $pay_order)
{
A('Pay/PayContinent')->doAddRate($payInfo['obj']['orderNumber'], $pay_order, 7);
$upData = [
'trade_no' => $payInfo['obj']['orderNumber'],
'order_state' => 'SUCCESS',
'trade_date' => time(),
'extend_content' => json_encode($payInfo),
'mer_id' => $config['qian_ke_mid'],//钱客云商户编号
];
return $upData;
}
/**
* 查询订单信息流水信息支付设置
* @param $param
* [
* merchant_id
* store_id
* bill_id 订单id
* pay_order_id 流水id
* pay_money 支付金额
* amount_received 实收金额
* ]
* @return mixed
*/
public function searchInfo($param)
{
$payOrderResult = $this->searchPayOrder($param['pay_order_id']);
if ($payOrderResult['status'] != 1) {
return $payOrderResult;
}
$pay_order = $payOrderResult['data']; //流水信息
$billOrderResult = $this->searchBillOrder($param['bill_id']);
if ($billOrderResult['status'] != 1) {
return $billOrderResult;
}
$bill_order = $billOrderResult['data']; //订单信息
$paySetResult = $this->getPayConfig($param['merchant_id'], $pay_order['pay_type']);
if ($paySetResult['status'] != 1) {
return $paySetResult;
}
$config = $paySetResult['data']['config']; //支付设置
$result = [
'pay_order' => $pay_order,
'bill_order' => $bill_order,
'config' => $config
];
return callBack(statusCode()['success'], "查询成功", $result);
}
/**
* 第三方查询支付订单结果
* @param $param
* [
* [
* 公共参数
* pay_order 流水信息
* config 支付配置
* ]
* [
* 次卡
* ]
* [
* 会员充值
* merchant_id
* store_id
* recharge_id 活动id
* ]
* [
* pay_money 支付金额
* amount_received 实收金额
* billOrder 订单信息
* ]
* @return string
*/
public function getThirdPayState($param)
{
if (!in_array($param['pay_order']['pay_type'], ['1', '2'])) {
return callBack(statusCode()['error'], "未知的支付类型");
}
if ($param['pay_order']['m_pay_type'] == 3 || $param['pay_order']['m_pay_type'] == 4 || $param['pay_order']['m_pay_type'] == 5 || $param['pay_order']['m_pay_type'] == 6 || $param['pay_order']['m_pay_type'] == 7) {
$pay_channel = $param['pay_order']['m_pay_type'];
} else {
$pay_channel = $param['pay_order']['pay_type'];
}
switch ($pay_channel) {
case 1:
//微信
$payResult = $this->wxQueryOrder($param['pay_order'], $param['config']);
break;
case 2:
//支付宝
$payResult = $this->zfbQueryOrder($param['pay_order'], $param['config']);
break;
case 3:
//新大陆
$payResult = $this->xDLQueryOrder($param['pay_order']['out_trade_no'], $param['pay_order']['merchant_id'], $param['pay_order']['add_time']);
break;
case 4:
//云闪付
$payResult = $this->yunQueryOrder($param['pay_order']['out_trade_no'], $param['pay_order']['pay_type'], $param['config']);
break;
case 5:
//乐返
$happyPay = new \HappyPay\Business\HappyPay();
$payResult = $happyPay->happyPayQueryOrder($param);
break;
case 6:
//拉卡拉
$laKaLaPay = new \LaKaLaPay\Business\LaKaLaMis();
$payResult = $laKaLaPay->laKaLaPayQueryOrder($param);
break;
case 7:
//钱客云
$moneyGuest = new \MoneyGuestPay\Business\MoneyGuest();
$payResult = $moneyGuest->moneyGuestQueryOrder($param);
break;
}
$status = $payResult['status'];
$return_code = $payResult['return_code'];
$result_code = $payResult['result_code'];
//支付成功各渠道处理分润并返回流水表修改的信息
if ($status == 1 && $return_code == 1 && $result_code == 1) {
$payInfo = $payResult['payInfo'];
$upData = $this->payPaymentBack($pay_channel, $payInfo, $param['pay_order'], $param['config']);
$param['upData'] = $upData;
}
//返回信息
if ($status == 1) {
switch ($return_code) {
case 0:
$message = '未收到第三方支付返回信息';
break;
case 1:
switch ($result_code) {
case 0:
$message = '支付失败';
break;
case 1:
//支付成功回调
$callResult = $this->paymentCallBack($param);
$message = $callResult['data']['message'];
$result['payment_status'] = $callResult['data']['payment_status'];
$result['data'] = $callResult['data']['data'];
$result['data']['pay_coupon_fee'] = $upData['pay_coupon_fee']?$upData['pay_coupon_fee']:0;
break;
case 2:
$message = '支付中';
break;
case 3:
$message = '撤销中';
break;
case 4:
$message = '撤销支付成功';
break;
case 5:
$message = '撤销支付失败';
break;
case 6:
$message = '转入退款';
break;
}
break;
case 2:
$message = '返回未知状态';
break;
case 3:
$message = '查询失败';
break;
}
} else {
$message = '发出请求失败';
}
$result['status'] = $status;
$result['return_code'] = $return_code;
$result['result_code'] = $result_code;
$result['pay_channel'] = $pay_channel;
$result['message'] = $message;
return $result;
}
/**
* 支付成功回调
* @param $param
* [
* 修改的信息 upData
* 流水信息 pay_order
* ]
* @return mixed
*/
public function paymentCallBack($param)
{
$upData = $param['upData'];
switch ($param['pay_order']['order_type']) {
case 1:
//购买商品
$PaymentCallBackClass = new PaymentCallBack();
$callResult = $PaymentCallBackClass->callBackHandle([
'pay_order' => $param['pay_order'],
'pay_type' => $param['pay_order']['pay_type'],
'upData' => $upData,
'pay_money' => $param['pay_money'],
'amount_received' => $param['amount_received'],
'billOrder' => $param['billOrder'],
]);
$payment_status = $callResult['status'];
$message = $callResult['message'];
break;
case 2:
//会员充值
$PaymentCallBackClass = new PaymentCallBack();
$callResult = $PaymentCallBackClass->rechargeCallBackHandle([
'merchant_id' => $param['merchant_id'],
'store_id' => $param['store_id'],
'pay_order' => $param['pay_order'],
'recharge_id' => $param['recharge_id'] ? $param['recharge_id'] : 0,
'upData' => $upData
]);
$payment_status = $callResult['status'];
$data = $callResult['data'];
$message = $callResult['message'];
break;
case 7:
//购买次卡
$PaymentCallBackClass = new PaymentCallBack();
$callResult = $PaymentCallBackClass->cardCallBackHandle([
'pay_order' => $param['pay_order'],
'upData' => $upData
]);
$payment_status = $callResult['status'];
$message = $callResult['message'];
break;
}
return callBack(statusCode()['success'], "回调执行", [
'message' => $message ? $message : '',
'data' => $data ? $data : [],
'payment_status' => $payment_status
]);
}
/**
* 查询流水信息
* @param $pay_order_id 流水id
* @return mixed
*/
public function searchPayOrder($pay_order_id)
{
$payOrderClass = new \Common\Business\PayOrder();
$result = $payOrderClass->basisIdGetInfo($pay_order_id);
return $result;
}
/**
* 查询订单信息
* @param $bill_id 订单id
* @return mixed
*/
public function searchBillOrder($bill_id)
{
$billOrderClass = new BillOrder();
$result = $billOrderClass->basisIdGetInfo($bill_id);
return $result;
}
/**
* 获取商户支付模式及权限
* @param $merchant_id
* @param $pay_type 支付类型 1微信 2支付宝 3现金 5其他 6余额 7赊账
* @return mixed
* [
* data => config 支付配置
* ]
*/
public function getPayConfig($merchant_id, $pay_type)
{
$paySetClass = new PaySet();
$result = $paySetClass->basisMerchantIdGetInfo($merchant_id, $pay_type);
return $result;
}
/**
* 查询支付订单状态的参数验证
* @param $param
* [
* cashier_id
* bill_id 订单id
* pay_order_id 流水id
* pay_money 支付金额
* amount_received 实收金额
* ]
* @return mixed
*/
public function queryOrderVerify($param)
{
if (empty($param['merchant_id']) || empty($param['store_id']) || empty($param['cashier_id'])) {
return callBack(statusCode()['error'], "未知的收银员");
}
if (empty($param['bill_id']) || empty($param['pay_order_id'])) {
return callBack(statusCode()['error'], "缺少订单必要参数");
}
if (!verifyPrice($param['pay_money']) || !verifyPrice($param['amount_received']) || floatval($param['amount_received']) < floatval($param['pay_money'])) {
return callBack(statusCode()['error'], "支付金额有误");
}
return callBack(statusCode()['success'], "验证成功");
}
}