|
@@ -12,6 +12,8 @@ declare (strict_types=1);
|
|
|
|
|
|
namespace app\index\service;
|
|
|
|
|
|
+use app\index\model\User as UserModel;
|
|
|
+use app\index\service\order\PaySuccess;
|
|
|
use app\index\service\User as UserService;
|
|
|
use app\index\model\wxapp\Setting as WxappSettingModel;
|
|
|
use app\common\enum\OrderType as OrderTypeEnum;
|
|
@@ -20,6 +22,7 @@ use app\common\library\paypal\PayPal;
|
|
|
use app\common\service\BaseService;
|
|
|
use app\common\library\wechat\WxPay;
|
|
|
use app\common\exception\BaseException;
|
|
|
+use think\facade\Log;
|
|
|
|
|
|
/**
|
|
|
* 订单支付服务类
|
|
@@ -48,12 +51,37 @@ class Payment extends BaseService
|
|
|
OrderTypeEnum::ORDER
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
+ //paypal支付
|
|
|
if ($payType == OrderPayTypeEnum::PAYPAL) {
|
|
|
$conf = config('paypal');
|
|
|
$pp = new PayPal($conf);
|
|
|
return $pp->unify($order['order_no'], $order['pay_price']);
|
|
|
}
|
|
|
+
|
|
|
+ //积分兑换
|
|
|
+ if ($payType == OrderPayTypeEnum::POINTS) {
|
|
|
+ $userInfo = User::getCurrentLoginUser();
|
|
|
+ $points = $userInfo['points'];
|
|
|
+
|
|
|
+ $payPoints = intval(bcmul(strval($order['pay_price']), '100', 0));//订单所需积分
|
|
|
+ if (intval($points) < $payPoints) {
|
|
|
+ return ['flag' => false, 'message' => '积分不够'];
|
|
|
+ } else {
|
|
|
+ $orderModel = new PaySuccess($order['order_no']);
|
|
|
+ $transId = 'VP' . date('YmdHis') . $userInfo['user_id'];
|
|
|
+
|
|
|
+ $describe = "用户消费:{$order['order_no']}";
|
|
|
+ UserModel::setIncPoints($userInfo['user_id'], -$payPoints, $describe);
|
|
|
+ $status = $orderModel->onPaySuccess(OrderPayTypeEnum::POINTS, ['transaction_id' => $transId]);
|
|
|
+ if ($status) {
|
|
|
+ return ['flag' => true, 'message' => 'success'];
|
|
|
+ } else {
|
|
|
+ Log::error('orderPayment:积分兑换error,userId:' . $userInfo['user_id'] . ',orderNo:' . $order['order_no']);
|
|
|
+ return ['flag' => false, 'message' => 'error'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//todo stripe
|
|
|
return [];
|
|
|
}
|