二维码图片无法输出时使用ob_clean()
本该是二维码的图片,但是出现不了,显示空白,代码使用的是PHP的qrcode,查询了一些资料后使用了ob_clean(),居然全都正常出来了,大概的意思是,程序中如果有大量生成图片的地方,在输出时 ,必须要先清掉缓存区;
本该是二维码的图片,但是出现不了,显示空白,代码使用的是PHP的qrcode,查询了一些资料后使用了ob_clean(),居然全都正常出来了,大概的意思是,程序中如果有大量生成图片的地方,在输出时 ,必须要先清掉缓存区;
高德:
JsKey:f864fe1d450df051c5b57167f42a71b2
WebKey:c132bda15ffbdbe4c51b006b2951ef1b百度
服务器端(web):dsOE1fqvrdIPMRqZW8WYylBO36mWHVSp
浏览器端(js):GZSILhN6GDZpDkdku64uWWnGTgTBQmzX 项目背景:用curl调用第三方erp接口上传数据,数据过大的时候返回null,用postman就可以,
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
因为当 strlen($data) > 1024 时,curl_exec函数将返回空字符串。要加一行参:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 1、支付是否成功判断
public function validate_apple_pay($receipt_data){
/**
* 21000 App Store不能读取你提供的JSON对象
* 21002 receipt-data域的数据有问题
* 21003 receipt无法通过验证
* 21004 提供的shared secret不匹配你账号中的shared secret
* 21005 receipt服务器当前不可用
* 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送
* 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务
* 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务
*/
function acurl($receipt_data, $sandbox=0){
//小票信息
$POSTFIELDS = array("receipt-data" => $receipt_data,'password'=>'8bc1988761044b279affc4250645aba2');
$POSTFIELDS = json_encode($POSTFIELDS);
//正式购买地址 沙盒购买地址
$url_buy = "https://buy.itunes.apple.com/verifyReceipt";
$url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
$url = $sandbox ? $url_sandbox : $url_buy;
// $url = $url_sandbox;
//简单的curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
// 验证参数
if (strlen($receipt_data)<20){
$result=array(
'status'=>false,
'message'=>'非法参数'
);
return $result;
}
// 请求验证
$html = acurl($receipt_data);
$data = json_decode($html,true);
// 如果是沙盒数据 则验证沙盒模式
if($data['status']=='21007'){
// 请求验证
$html = acurl($receipt_data, 1);
$data = json_decode($html,true);
$data['sandbox'] = '1';
}
if (isset($_GET['debug'])) {
exit(json_encode($data));
}
if(empty($data)){
$result=array(
'status'=>false,
'message'=>'error'
);
return $result;
}
// 判断是否购买成功
if(intval($data['status'])===0){
$result=array(
'status'=>true,
'message'=>'购买成功',
'info'=>json_encode($data),
);
}else{
$result=array(
'status'=>false,
'message'=>'购买失败 status:'.$data['status']
);
}
return $result;
}2、调用
public function apppay()
{
$param = $_POST['param'];
$res = $this->validate_apple_pay($param);
if($res['status']){ok}else{error}
} php
function daojishi(){
/*活动倒计时*/
$today =time(); //当前时间戳 6月7号
$end_time = '2020-12-12 23:59:59'; //一般由数据库查询出来的活动结束时间
$second = strtotime($end_time)-$today; //结束时间戳减去当前时间戳
if($second <= 0){
echo 'hhhhh';die;
}
// echo $second;
$day = floor($second/3600/24); //倒计时还有多少天
$hr = floor($second/3600%24); //倒计时还有多少小时(%取余数)
$min = floor($second/60%60); //倒计时还有多少分钟
$sec = floor($second%60); //倒计时还有多少秒
$str = $day."天".$hr."小时".$min."分钟".$sec."秒"; //组合成字符串
echo $str;
}js
<script>
countDown();
function addZero(i) {
return i < 10 ? "0" + i: i + "";
}
function countDown() {
var enddate = $('#enddate').val();
var nowtime = new Date();
var endtime = new Date(enddate);
var lefttime = parseInt((endtime.getTime() - nowtime.getTime()) / 1000);
var d = parseInt(lefttime / (24*60*60))
var h = parseInt(lefttime / (60 * 60) % 24);
var m = parseInt(lefttime / 60 % 60);
var s = parseInt(lefttime % 60);
d = addZero(d)
h = addZero(h);
m = addZero(m);
s = addZero(s);
document.querySelector(".djsd").innerHTML = d;
document.querySelector(".djsh").innerHTML = h;
document.querySelector(".djsm").innerHTML = m;
document.querySelector(".djss").innerHTML = s;
if (lefttime <= 0) {
document.querySelector(".djsd").innerHTML = 0;
document.querySelector(".djsh").innerHTML = 0;
document.querySelector(".djsm").innerHTML = 0;
document.querySelector(".djss").innerHTML = 0;
return;
}
setTimeout(countDown, 1000);
}
</script>