|
|
@@ -190,7 +190,7 @@ class PaymentService extends BaseService
|
|
|
// 创建支付
|
|
|
try {
|
|
|
$pay = $this->createPay($scene, 10, 'min');
|
|
|
- RedisService::set("caches:payments:wechat:{$scene}_{$outTradeNo}", ['order' => $order, 'config' => $this->config], 7200);
|
|
|
+ RedisService::set("caches:payments:wechat:minPay_{$scene}_{$outTradeNo}", ['order' => $order, 'config' => $this->config], 7200);
|
|
|
if (empty($pay)) {
|
|
|
$this->error = 2616;
|
|
|
return false;
|
|
|
@@ -198,7 +198,84 @@ class PaymentService extends BaseService
|
|
|
|
|
|
$pay = $pay->mini($payData);
|
|
|
} catch (\Exception $exception) {
|
|
|
- RedisService::set("caches:payments:wechat:{$scene}_{$outTradeNo}_error", ['order' => $order, 'error' => $exception->getTrace(), 'config' => $this->config], 7200);
|
|
|
+ RedisService::set("caches:payments:wechat:minPay_{$scene}_{$outTradeNo}_error", ['order' => $order, 'error' => $exception->getTrace(), 'config' => $this->config], 7200);
|
|
|
+ $this->error = $exception->getMessage();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($pay->package) {
|
|
|
+ $data = [
|
|
|
+ 'user_id' => $userInfo['id'],
|
|
|
+ 'out_trade_no' => $outTradeNo,
|
|
|
+ 'order_no' => $order['order_no'],
|
|
|
+ 'params' => json_encode($pay, 256),
|
|
|
+ 'total_fee' => $amount,
|
|
|
+ 'pay_type' => 10,
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'status' => 2,
|
|
|
+ 'mark' => 1,
|
|
|
+ ];
|
|
|
+ if ($this->model->insertGetId($data)) {
|
|
|
+ $this->error = 2617;
|
|
|
+ return $pay;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->error = 2618;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 微信公众号支付
|
|
|
+ * @param $userInfo
|
|
|
+ * @param $order
|
|
|
+ * @param string $scene
|
|
|
+ * @return false|\Yansongda\Supports\Collection
|
|
|
+ */
|
|
|
+ public function mpPay($userInfo, $order, $scene = 'store')
|
|
|
+ {
|
|
|
+ $amount = isset($order['pay_money']) ? $order['pay_money'] : 0;
|
|
|
+ $openid = isset($order['openid']) ? $order['openid'] : '';
|
|
|
+ if ($amount < 0) {
|
|
|
+ $this->error = 2615;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (empty($openid)) {
|
|
|
+ $this->error = 2614;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $outTradeNo = isset($order['order_no']) && $order['order_no'] ? $order['order_no'] : get_order_num('PR');
|
|
|
+ // 是否调用过支付,是则用新的支付单号
|
|
|
+ if ($outTradeNo && $this->model->where(['out_trade_no' => $outTradeNo, 'mark' => 1])->value('id')) {
|
|
|
+ $outTradeNo = $outTradeNo . date('is') . rand(1, 9);
|
|
|
+ }
|
|
|
+ $body = isset($order['body']) ? $order['body'] : '';
|
|
|
+ $payData = [
|
|
|
+ 'out_trade_no' => $outTradeNo,
|
|
|
+ 'description' => $body ? $body : '订单支付',
|
|
|
+ 'amount' => [
|
|
|
+ 'total' => intval($amount * 100),
|
|
|
+ 'currency' => 'CNY'
|
|
|
+ ],
|
|
|
+ 'payer' => [
|
|
|
+ 'openid' => $openid,
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 创建支付
|
|
|
+ try {
|
|
|
+ $pay = $this->createPay($scene, 10, 'mp');
|
|
|
+ RedisService::set("caches:payments:wechat:mp_{$scene}_{$outTradeNo}", ['order' => $order, 'config' => $this->config], 7200);
|
|
|
+ if (empty($pay)) {
|
|
|
+ $this->error = 2616;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ $pay = $pay->mp($payData);
|
|
|
+ } catch (\Exception $exception) {
|
|
|
+ RedisService::set("caches:payments:wechat:mp_{$scene}_{$outTradeNo}_error", ['order' => $order, 'error' => $exception->getTrace(), 'config' => $this->config], 7200);
|
|
|
$this->error = $exception->getMessage();
|
|
|
return false;
|
|
|
}
|
|
|
@@ -226,7 +303,7 @@ class PaymentService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 微信支付
|
|
|
+ * 微信APP支付
|
|
|
* @param $userInfo
|
|
|
* @param $order
|
|
|
* @param string $scene
|