Files
midi-php/extend/Xilaixi/Xilaixi.php

135 lines
4.1 KiB
PHP
Raw Normal View History

2025-10-09 20:08:02 +08:00
<?php
use think\Env;
class Xilaixi
{
private $pid;
private $key;
private string $sign_type = 'MD5';
private string $mapi_url = 'https://wxjs.980city.com/mapi.php';
private string $api_url = 'https://wxjs.980city.com/api.php';//https://wxjs.980city.com/api.php?
function __construct(){
$this->pid = Env::get('AllinPay.appId');//平台分配的APPID
$this->key = Env::get('AllinPay.appId');//平台分配的APPID
}
/**
* 西来喜支付
*/
public function XilaixiPay($date, $type) {
//6-西来喜微信7-西来喜支付宝8-西来喜QQ钱包9-西来喜云闪付
if($type == 6){
$type = 'wxpay';
}elseif ($type == 7){
$type = 'alipay';
}elseif ($type == 8){
$type = 'qqpay';
}elseif ($type == 9){
$type = 'bank';
}
//构造要请求的参数数组,无需改动
$parameter = array(
"pid" => $this->pid,
"type" => $type,
"notify_url" => get_system_config_value("web_site")."/api/Payment/XilaixiPayNotify",
"return_url" => '',
"out_trade_no" => $date['order_sn'],//商户订单号,
"name" => $date['remarke'],//订单标题(不能有空格),
"money" => $date['money'],
);
$param = $this->buildRequestParam($parameter);
$response = $this->getHttpResponse($this->mapi_url, http_build_query($param));
return json_decode($response, true);
}
private function buildRequestParam($param){
$mysign = $this->getSign($param);
$param['sign'] = $mysign;
$param['sign_type'] = $this->sign_type;
return $param;
}
// 计算签名
private function getSign($param){
ksort($param);
reset($param);
$signstr = '';
foreach($param as $k => $v){
if($k != "sign" && $k != "sign_type" && $v!=''){
$signstr .= $k.'='.$v.'&';
}
}
$signstr = substr($signstr,0,-1);
$signstr .= $this->key;
$sign = md5($signstr);
return $sign;
}
// 请求外部资源
private function getHttpResponse($url, $post = false, $timeout = 10){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept: */*";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($post){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
// 异步回调验证
public function verifyNotify(){
if(empty($_GET)) return false;
$sign = $this->getSign($_GET);
if($sign === $_GET['sign']){
$signResult = true;
}else{
$signResult = false;
}
return $signResult;
}
// 查询订单支付状态
public function orderStatus($trade_no){
$result = $this->queryOrder($trade_no);
if($result['status']==1){
return true;
}else{
return false;
}
}
// 查询订单
public function queryOrder($trade_no){
$url = $this->api_url.'?act=order&pid=' . $this->pid . '&key=' . $this->key . '&trade_no=' . $trade_no;
$response = $this->getHttpResponse($url);
$arr = json_decode($response, true);
return $arr;
}
// 订单退款
public function refund($trade_no, $money){
$url = $this->api_url.'?act=refund';
$post = 'pid=' . $this->pid . '&key=' . $this->key . '&trade_no=' . $trade_no . '&money=' . $money;
$response = $this->getHttpResponse($url, $post);
$arr = json_decode($response, true);
return $arr;
}
}