order_no = $order_no; $this->money = $money; // $this->money = 0.01; $this->remark = $remark; $this->notify_url = $notify_url; $payment = [ 'wechat' => 'wechatLiteH5', 'alipay' => 'alipayApp', // 'alipay' => 'alipaуWаp', // 'alipay' => 'alipayLite', ]; try { $result = $this->addOrder($payment[$pay_type]); $code_url = $result['payurl']; //跳转地址 $jumpurl = [ 'wechat' => "/index/index/pay?url={$code_url}", 'alipay' => "/index/index/alipay?url={$code_url}", ]; $jumpurl = $jumpurl[$pay_type]; } catch (\Exception $e) { return $this->error('支付下单失败!' . $e->getMessage()); } return $this->success('支付下单成功!', [ 'out_trade_no' => $result['out_trade_no'], 'total_amount' => $result['total_amount'], 'trade_no' => $result['trade_no'], 'trade_type' => $result['trade_type'], 'url' => CurlUtil::getHttp($jumpurl) ]); } /** * 获取订单信息 * @param $out_trade_no * @return mixed * @throws \Exception */ public function getOrder($out_trade_no) { $client = new PasspayClient($this->host, $this->mch_id, $this->merchant_private_key, $this->platform_public_key); $param = [ 'out_trade_no' => $out_trade_no, ]; try { $result = $client->execute('pay.order/query', $param); } catch (\Exception $e) { return $this->error('获取失败!' . $e->getMessage()); } return $this->success('获取成功!', $result); } /** * 校验通知签名 * @param $params * @return bool */ public function checkSign($params) { $client = new PasspayClient($this->host, $this->mch_id, $this->merchant_private_key, $this->platform_public_key); return $client->verifySign($params); } /** * 统一下单 * @param string $trade_type * @param $sub_appid * @param $sub_openid * @return mixed */ private function addOrder(string $trade_type, $sub_appid = null, $sub_openid = null) { // 客户端IP 防风控 $client_ip = Request::instance()->ip(); $client = new PasspayClient($this->host, $this->mch_id, $this->merchant_private_key, $this->platform_public_key); $notify_url = CurlUtil::getHttp($this->notify_url, false); $param = [ 'trade_type' => $trade_type, 'out_trade_no' => $this->order_no, 'total_amount' => $this->money, "subject" => $this->remark, 'notify_url' => $notify_url, 'return_url' => '',//支付完成跳转地址,仅支持非原生支付,快捷支付,网银等支持同步跳转的支付类型 'client_ip' => $client_ip, ]; if ($sub_appid && $sub_openid) { $param += [ 'sub_appid' => $sub_appid, 'user_id' => $sub_openid, 'channe_expend' => json_encode(['is_raw' => 1]) ]; } return $client->execute('pay.order/create', $param); } }