<?php
|
|
namespace app\api\service\order;
|
use app\api\model\settings\Setting as SettingModel;
|
use app\common\library\alipay\AliPay;
|
use app\common\library\easywechat\AppOpen;
|
use app\common\library\easywechat\AppWx;
|
use app\common\library\easywechat\AppMp;
|
use app\common\library\easywechat\WxPay;
|
use app\common\enum\order\OrderTypeEnum;
|
use app\common\enum\order\OrderPayTypeEnum;
|
use app\common\library\helper;
|
use app\common\model\app\App as AppModel;
|
use app\common\model\app\AppPay as AppPayModel;
|
use app\common\model\order\OrderTrade as OrderTradeModel;
|
use app\common\service\order\OrderService;
|
use app\common\library\fbpay\FbPay;
|
use app\common\model\app\AppWx as AppWxModel; //by lyzflash
|
use app\common\model\supplier\Supplier as SupplierModel;
|
|
class PaymentService
|
{
|
/**
|
* 构建订单支付参数
|
*/
|
public static function orderPayment($user, $order, $payType)
|
{
|
if ($payType == OrderPayTypeEnum::WECHAT) {
|
return self::wechat(
|
$user,
|
$order['order_id'],
|
$order['order_no'],
|
$order['pay_price'],
|
OrderTypeEnum::MASTER
|
);
|
}
|
return [];
|
}
|
|
/**
|
* 微信支付接口选择 by lyzflash
|
*/
|
public static function wechat(
|
$user,
|
$orderNo,
|
$orderType,
|
$pay_source,
|
$payPrice,
|
$multiple = 0,
|
$shop_supplier_id = 0
|
)
|
{
|
// 获取平台支付参数
|
$appShop = AppModel::getAppCache($user['app_id']);
|
///获取后台是否设置了商户独立收款 by yj 2024.3.12
|
// $is_independent = SettingModel::getIndependentOpen();
|
$is_independent = SupplierModel::getIndependentOpen($shop_supplier_id);
|
if(!empty($is_independent)){
|
//分每个商户有单独的付呗支付信息
|
$AppConfig = AppPayModel::detail($shop_supplier_id);
|
}else{
|
$AppConfig = $appShop;
|
}
|
// 判断是否开启半屏小程序支付
|
if ($AppConfig["apitype"] && !empty($AppConfig['is_embed'])) {
|
// 获取当前小程序信息
|
$wxConfig = AppWxModel::getAppWxCache($user['app_id']);
|
// 将支付参数加密
|
$payParams = [
|
'app_id' => $AppConfig['embed_app_id'],
|
'vendor_sn' => $AppConfig['fbpay_vendor_sn'],
|
'secret' => $AppConfig['fbpay_secret'],
|
'merchant_id' => $AppConfig['fbpay_merchant_id'],
|
'store_id' => $AppConfig['fbpay_store_id'],
|
'fbapp_id' => $AppConfig['fbpay_app_id'],
|
];
|
return [
|
'extraData' => [
|
'payParams' => aes_encrypted($payParams, $AppConfig['embed_key']),
|
'order_no' => $orderNo,
|
'trade_no' => $orderNo,
|
'open_id' => $user['open_id'],
|
'pay_price' => $payPrice,
|
'order_type' => $orderType,
|
'pay_source' => $pay_source,
|
'multiple' => $multiple,
|
'shop_supplier_id' => $shop_supplier_id,
|
'wxapp_id' => $wxConfig['wxapp_id'],
|
'pay_type' => 20,
|
'notify_url' => base_url() . 'index.php/job/notify/fbpay',
|
],
|
'embed_app_id' => $AppConfig['embed_app_id'], // 半屏小程序的appId
|
'embed_path' => $AppConfig['embed_path'], // 半屏小程序的路径
|
'is_embed' => $AppConfig['is_embed'],
|
];
|
}
|
|
if($AppConfig["apitype"]) { //付呗支付
|
return self::fbpay($user, $orderNo, $payPrice, $orderType, $pay_source,$multiple,$shop_supplier_id);
|
} else {
|
return self::wechatpay($user, $orderNo, $payPrice, $orderType, $pay_source,$multiple,$shop_supplier_id);
|
}
|
}
|
|
/**
|
* 构建微信支付
|
*/
|
public static function wechatpay(
|
$user,
|
$orderNo,
|
$payPrice,
|
$orderType,
|
$pay_source,
|
$multiple = 0,
|
$shop_supplier_id = 0
|
)
|
{
|
// 统一下单API
|
if($pay_source == 'wx'){
|
$app = AppWx::getWxPayApp($user['app_id'],$shop_supplier_id);
|
$open_id = $user['open_id'];
|
}else if($pay_source == 'mp'){
|
$app = AppMp::getWxPayApp($user['app_id']);
|
$open_id = $user['mpopen_id'];
|
} else if($pay_source == 'payH5'){
|
$app = AppMp::getWxPayApp($user['app_id']);
|
$open_id = '';
|
} else if($pay_source == 'android'||$pay_source == 'ios'){
|
$app = AppOpen::getWxPayApp($user['app_id']);
|
$open_id = $user['appopen_id'];
|
}
|
|
|
$WxPay = new WxPay($app);
|
$payment = $WxPay->unifiedorder($orderNo, $open_id, $payPrice, $orderType, $pay_source, $multiple, $user['app_id']);
|
if($pay_source == 'wx'){
|
return $payment;
|
}else if($pay_source == 'mp'){
|
$jssdk = $app->jssdk;
|
return $jssdk->bridgeConfig($payment['prepay_id']);
|
}else if($pay_source == 'payH5'){
|
return $payment;
|
}else if($pay_source == 'android'||$pay_source == 'ios'){
|
return $payment;
|
}
|
return false;
|
}
|
|
/**
|
* 构建支付宝支付
|
*/
|
public static function alipay(
|
$user,
|
$orderNo,
|
$payPrice,
|
$orderType,
|
$pay_source,
|
$multiple = 0
|
)
|
{
|
$AliPay = new AliPay();
|
$payment = $AliPay->unifiedorder($orderNo, $payPrice, $orderType, $pay_source, $multiple);
|
return $payment;
|
}
|
|
/**
|
* 构建付呗支付 by lyzflash
|
*/
|
public static function fbpay(
|
$user,
|
$orderNo,
|
$payPrice,
|
$orderType,
|
$pay_source,
|
$multiple = 0,
|
$shop_supplier_id = 0
|
)
|
{
|
// 统一下单API
|
$app = FbPay::getFbPayApp($user['app_id'], $shop_supplier_id);
|
if($pay_source == 'wx'){
|
$open_id = $user['open_id'];
|
}else if($pay_source == 'mp'){
|
$open_id = $user['mpopen_id'];
|
} else if($pay_source == 'payH5'){
|
$open_id = '';
|
} else if($pay_source == 'app'){
|
$open_id = $user['appopen_id'];
|
}
|
|
$FbPay = new FbPay($app);
|
$payment = $FbPay->unifiedorder($orderNo, $open_id, $payPrice, $orderType, $pay_source, $multiple);
|
if($pay_source == 'wx'){
|
return $payment;
|
}else if($pay_source == 'mp'){
|
$jssdk = $app->jssdk;
|
return $jssdk->bridgeConfig($payment['prepay_id']);
|
}else if($pay_source == 'payH5'){
|
return $payment;
|
}else if($pay_source == 'app'){
|
return $payment;
|
}
|
}
|
}
|