|
@@ -2,12 +2,9 @@
|
|
|
|
|
|
namespace app\api\controller\pay;
|
|
|
|
|
|
-use app\model\Order;
|
|
|
use app\model\PayDetail;
|
|
|
-use Payment\Common\PayException;
|
|
|
use support\Db;
|
|
|
use support\Request;
|
|
|
-use Yansongda\Pay\Exceptions\BusinessException;
|
|
|
use Yansongda\Pay\Pay;
|
|
|
|
|
|
class WxpayController
|
|
@@ -16,6 +13,8 @@ class WxpayController
|
|
|
public function index(Request $request)
|
|
|
{
|
|
|
$params = $request->all();
|
|
|
+ \support\Log::info("开始获取微信支付参数",$params);
|
|
|
+
|
|
|
if (!isset($params['order_id'])) {
|
|
|
return json_fail('参数异常');
|
|
|
}
|
|
@@ -27,6 +26,20 @@ class WxpayController
|
|
|
if (!$payDetail) {
|
|
|
return json_fail('订单异常');
|
|
|
}
|
|
|
+ if (!empty($params['pay_amount']) && $params['pay_amount'] != $payDetail->pay_amount) {
|
|
|
+ return json_fail("支付金额与订单金额不符");
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($payDetail->pay_category == 'MEALS'){
|
|
|
+ $payObjectJson = [];
|
|
|
+ if (!empty($payDetail->join_pay_object_json)) {
|
|
|
+ $payObjectJson = json_decode($payDetail->join_pay_object_json, true);
|
|
|
+ }
|
|
|
+ // 标记发生过支付请求
|
|
|
+ $payObjectJson['pay_marking'] = 'Y';
|
|
|
+ $payDetail->join_pay_object_json = json_encode($payObjectJson);
|
|
|
+ }
|
|
|
+
|
|
|
$payData = [
|
|
|
'out_trade_no' => $orderId,
|
|
|
'body' => '万悦康养订单',
|
|
@@ -42,35 +55,33 @@ class WxpayController
|
|
|
$wxpay = Pay::wechat(config('payment.wxpay'))->app($payData)->getContent();
|
|
|
}elseif ($params['platform'] == 'WeChat'){ // 公众号
|
|
|
if (empty($params['openid'])){
|
|
|
- Db::rollBack();
|
|
|
- return json_fail("缺少OpenID 参数");
|
|
|
+ throw new \support\exception\BusinessException("缺少OpenID 参数");
|
|
|
}
|
|
|
$payData['openid'] = $params['openid'];
|
|
|
$config = config('payment.wxpay');
|
|
|
$wxpay = Pay::wechat($config)->mp($payData);
|
|
|
}elseif ($params['platform'] == 'mp-weixin'){ // 小程序
|
|
|
if (empty($params['openid'])){
|
|
|
- Db::rollBack();
|
|
|
- return json_fail("缺少OpenID 参数");
|
|
|
+ throw new \support\exception\BusinessException("缺少OpenID 参数");
|
|
|
}
|
|
|
$payData['openid'] = $params['openid'];
|
|
|
$wxpay = Pay::wechat(config('payment.wxpay'))->miniapp($payData);
|
|
|
}else{
|
|
|
- throw new PayException("平台参数无效");
|
|
|
+ throw new \support\exception\BusinessException("平台参数无效");
|
|
|
}
|
|
|
|
|
|
Db::commit();
|
|
|
+ \support\Log::info("微信支付参数获取成功");
|
|
|
return json_success('', json_decode($wxpay, true));
|
|
|
} catch (\support\exception\BusinessException $e) {
|
|
|
Db::rollBack();
|
|
|
+ \support\Log::error("微信支付参数获取失败",['msg'=>$e->getMessage()]);
|
|
|
return json_fail($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
Db::rollBack();
|
|
|
- dump($e->getMessage());
|
|
|
+ \support\Log::error("微信支付参数获取失败",['msg'=>$e->getMessage()]);
|
|
|
return json_fail('下单失败:'.$e->getMessage());
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private function getConfig()
|