add-api-pay_img

This commit is contained in:
lccsw
2022-04-01 16:35:14 +08:00
parent 1d814e7125
commit edff44b187
4 changed files with 110 additions and 8 deletions
-4
View File
@@ -11,9 +11,5 @@ class Welcome extends CI_Controller {
}
public function test(){
$this->load->library('receiver/orders_v2_entity');
$biz_id = 134;
$row = $this->orders_v2_entity->get_biz_mchid($biz_id);
print_r($row);
}
}
+3 -3
View File
@@ -211,7 +211,7 @@ class CusorderV2 extends Wxapp{
$this->customers_model->update(array('order_time' => date('Y-m-d H:i:s')),['id'=>$cus_id]);
$this->customers_entity->add_log($cus_id, $this->session['uid'], $this->session['uname'], "新增订单");
return ['id'=>$o_id,'pay_img'=>$orders_entity::API_PAY_IMG];
return ['id'=>$o_id,'pay_img'=>$orders_entity->pay_img($o_id)];
}else{
throw new Exception('创建失败', ERR_PARAMS_ERROR);
}
@@ -289,7 +289,7 @@ class CusorderV2 extends Wxapp{
$userinfo = $this->app_liche_users_model->get(['mobile'=>$data['mobile']],'id');
$orders_entity->c_intention($o_id,$userinfo['id'],$inten_money);
}
return ['id'=>$o_id,'pay_img'=>$orders_entity::API_PAY_IMG];
return ['id'=>$o_id,'pay_img'=>$orders_entity->pay_img($o_id)];
}
//修改订单信息
@@ -470,7 +470,7 @@ class CusorderV2 extends Wxapp{
'payway' => $row['brand_id'] ? $row['payway'] : '',
'car_data' => $car_data,
'pay_status' => $pay_status,
'pay_img' => $orders_entity::API_PAY_IMG,
'pay_img' => $orders_entity->pay_img($row['id']),
'pack_id' => $row['pack_id'],
'brand_id' => $row['brand_id'],
'car_id' => $row['s_id'],
+88
View File
@@ -169,6 +169,66 @@ class Hd_wechat
return $api_ticket;
}
/**
* 生成二维码
* @param $filename (文件名称)
* @param $scene (最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
* @param $page (必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面)
* @param $width (二维码的宽度,单位 px,最小 280px,最大 1280px,默认430px)
* @return array {'file':'文件路径', 'url':'访问相对路径'}
*/
function qrcode($filename, $scene, $page, $width){
$file = APPPATH . '../www/api/wx/' . $filename . '.png';
$dir = substr($file, 0, strrpos($file, '/'));
if(!is_dir($dir)){
$ret = mkdir($dir, 0777, true);// 如果文件夹不存在,将以递归方式创建该文件夹
if(!$ret){
debug_log("[error] ". __FUNCTION__ . ": mkdir {$ret}, filename:{$filename}, scene:{$scene}, page:{$page}, width:{$width}", $this->log_dir);
return array();
}
}
if(file_exists($file)){
return array('file' => $file, 'url' => 'wx/' . $filename . '.png');
}
$access_token = $this->access_token();
if(!$access_token){
debug_log("[error] ". __FUNCTION__ . ": not access_token", $this->log_dir);
return array();
}
$pre_url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=';
$url = $pre_url . $access_token;
$data = array(
'scene' => $scene,
'page' => $page,
'width' => $width ? $width : 430,
);
list($code, $res) = $this->http_post($url, $data);
$ret = json_decode($res, true);
if(isset($ret['errcode']) && 40001 == $ret['errcode']){//token过期,重置后请求
$url = $pre_url . $this->access_token(true);
list($code, $res) = $this->http_post($url, $data);
$ret = json_decode($res, true);
}
if(isset($ret['errcode'])){
debug_log("[error] ". __FUNCTION__ . ": httpcode:{$code}, response:{$res}, filename:{$filename}, scene:{$scene}, page:{$page}, width:{$width}", $this->log_dir);
return array();
}
$ret = file_put_contents($file, $res);
if(false === $ret){
debug_log("[error] ". __FUNCTION__ . ": file_put_contents {$ret}, filename:{$filename}, scene:{$scene}, page:{$page}, width:{$width}", $this->log_dir);
return array();
}
return array('file' => $file, 'url' => 'wx/' . $filename . '.png');
}
/**
* @param $url
* @return mixed
@@ -198,4 +258,32 @@ class Hd_wechat
return $res;
}
/**
* @param $url
* @param $data
* @return array
*/
private function http_post($url, $data){
debug_log("[info] ". __FUNCTION__ . ":url={$url}, data=".json_encode($data), $this->log_dir);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$res = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$size = strlen($res);
if($size > 5000){
debug_log("[info] ". __FUNCTION__ . ":httpcode={$code}, response is big only show size={$size}", $this->log_dir);
} else {
debug_log("[info] ". __FUNCTION__ . ":httpcode={$code}, response={$res}", $this->log_dir);
}
return array($code, $res);
}
}
+19 -1
View File
@@ -11,7 +11,6 @@ class Orders_v2_entity{
const PRICE_FINANCE = 1000; //金融服务费写死
const PRICE_FINANCE_NZ = 2000; //哪吒金融服务费
const API_PAY_IMG = 'https://img.liche.cn/liche/2022/04/22ed0636993504bc/18ad8baab11b2891.png'; //api 跳转支付二维码
//const API_CREATE_PAY_IMG = 'https://img.liche.cn/liche/2021/11/65b34b962f5f06b3/62e7d28d77bfe404.png'; //api 狸车我的页面
const V2_START_ID = 10000; //升级后订单开始
private $ci;
@@ -639,4 +638,23 @@ class Orders_v2_entity{
return $data;
}
//小程序支付图片
public function pay_img($oid){
$this->ci->load->model('app/app_model', 'mdApp');
$wxconfig = $this->ci->mdApp->appConfig()[1]['wx'];
$img = self::API_PAY_IMG;
if ($wxconfig) {
$this->ci->load->library("hd_wechat", $wxconfig);
$width = '430px';
$path = "pages/mine/carOrder/index";
$scene = $oid;
$filename = "{$this->ci->mdApp->appConfig()[1]['app_key']}/" . substr(md5($path.'?id='.$oid), 8, 16);
$result = $this->ci->hd_wechat->qrcode($filename,$scene,$path,$width);
if($result['url']){
$img = http_host_com('api').'/'.$result['url'];
}
}
return $img;
}
}