支付宝服务窗API接口开发php版本.docx
《支付宝服务窗API接口开发php版本.docx》由会员分享,可在线阅读,更多相关《支付宝服务窗API接口开发php版本.docx(21页珍藏版)》请在冰豆网上搜索。
支付宝服务窗API接口开发php版本
这篇文章主要介绍了php版本的支付宝服务窗API接口开发,感兴趣的小伙伴们可以参考一下
支付宝服务窗API接口的开发对于许多网站要充值的朋友来讲是非常的重要的,今天我们就一起来看一篇关于php版本的支付宝服务窗API接口的开发例子。
这两天没事要接入支付宝服务窗,看支付宝的DEMO,我的神,我怎么评价好呢?
阅读性不是很好,很阻碍简单的开发。
所以我就根据提供的API简单的开发了点,接口还有很多不完善,有兴趣的可以自己完善一下,下边我就把代码贴出来,有时间再写如何使用。
<?
php
classAlipayService{
/**
-服务接口信息
*/
public$service=null;
/**
-签名信息
*/
public$sign=null;
/**
-签名类型
*/
public$sign_type=null;
/**
-字符集
*/
public$charset=null;
/**
-解析的biz_content数据
*/
public$request=null;
/**
-用户openid
*/
public$from_user_id=null;
/**
-消息类型
*/
public$msg_type=null;
/**
-事件类型
*/
public$event_type=null;
/**
-行为参数
*/
public$action_param=null;
/**
-支付宝用户信息
*/
public$user_info=null;
/**
-文本消息内容
*/
public$text=null;
/**
-图片媒体id
*/
public$media_id=null;
/**
-图片格式
*/
public$format=null;
/**
-是否开启调试
*/
private$debug=false;
/**
-接口类型
*/
private$interface_type=array(
'qrcode'=>'alipay.mobile.public.qrcode.create',
'follow'=>'alipay.mobile.public.follow.list',
'gis_get'=>'alipay.mobile.public.gis.get',
'menu_get'=>'alipay.mobile.public.menu.get',
'menu_add'=>'alipay.mobile.public.menu.add',
'down_media'=>'alipay.mobile.public.multimedia.download',
'menu_update'=>'alipay.mobile.public.menu.update',
'info_query'=>'alipay.mobile.public.info.query',
'info_modify'=>'alipay.mobile.public.info.modify',
'shortlink'=>'alipay.mobile.public.shortlink.create',
'label_add'=>'alipay.mobile.public.label.add',
'label_del'=>'alipay.mobile.public.label.delete',
'label_update'=>'alipay.mobile.public.label.update',
'label_query' =>'alipay.mobile.public.label.query',
'label_user_add'=>'alipay.mobile.public.label.user.add',
'label_user_del'=>'alipay.mobile.public.label.user.delete',
'label_user_query'=>'alipay.mobile.public.label.user.query',
'message_custom'=>'alipay.mobile.public.message.custom.send',
'message_total'=>'alipay.mobile.public.message.total.send',
'message_single'=>'alipay.mobile.public.message.single.send',
'message_label_send'=>'alipay.mobile.public.message.label.send',
);
/**
-私有密钥地址,替换为你自己的
*/
private$private_rsa_key_path='rsa_private_key.pem';
/**
-私有密钥地址,替换为你自己的
*/
private$public_rsa_key_path='rsa_public_key.pem';
/**
-支付宝窗的appid替换成你自己的
*/
private$app_id='2015120200901652';
/**
-开启DEBUG参数
-@paramsbooldebugtrue开启调试false关闭调试
-@authorwiduu<admin@>
*/
publicfunction__construct($debug=false){
/*是否开启DEBUG*/
if($debug)$this->debug=true;
}
/**
-获取参数,解析请求参数
-
-@authorwiduu<admin@>
*/
publicfunctionget_request(){
if(!
emptyempty($_POST)){
//请求的服务接口
$this->service=$_POST['service'];
//获取请求字符集
$this->charset=$_POST['charset'];
//获取请求的biz_content
$request_biz_content=$_POST['biz_content'];
//加密算法
$this->sign_type=$_POST['sign_type'];
//加密字符串
$this->sign=$_POST['sign'];
//如果请求格式不是Utf-8转换格式为Utf-8
if(strtolower($this->charset)!
='utf-8'){
$request_biz_content=iconv('GBK','utf-8',$request_biz_content);
}
//解析字符串为xml
$request_xml=@simplexml_load_string($request_biz_content,"SimpleXMLElement",LIBXML_NOCDATA);
//解析为数组
$request_array=$request_xml),true);
$this->request=$request_array;
/*解析*/
$this->analysis($request_array);
if($this->debug)$this->write_log('REQUEST_INFO',var_export($request_array,true));
//默认验证方法
if($this->service=='alipay.service.check'){
$this->verify($_POST);
exit();
}
/*返回结果*/
return$request_array;
}
}
/**
-回复文本内容
-@paramsstringcontent文本数据
-@paramsboolmassture为群发
-@authorwiduu<admin@>
*/
publicfunctiontext($content,$mass=false){
$info['text']=array('content'=>$content);
/*组织内容*/
$biz_content=$this->common_response('text',$info,$mass);
/*判断是否为群发*/
if($mass){
$method='message_total';
}else{
$method='message_custom';
}
$sys_params=$this->common_system($method,$biz_content);
$sys_params['sign']=$this->rsa_sign($this->build_query($sys_params));
/*返回结果结果是JSON数据*/
$result=$this->response_post($sys_params);
return$result;
}
/**
-回复图文内容
-@paramsarrayarticles拼接的图文消息数组
-@paramsboolmassture为群发
-@authorwiduu<admin@>
*/
publicfunctionarticles($articles,$mass=false){
$info['articles']=array($articles);
/*组织内容*/
$biz_content=$this->common_response('image-text',$info,$mass);
/*判断是否群发*/
if($mass){
$method='message_total';
}else{
$method='message_custom';
}
/*加密参数*/
$sys_params=$this->common_system($method,$biz_content);
/*加密字符*/
$sys_params['sign']=$this->rsa_sign($this->build_query($sys_params));
/*返回结果结果是JSON数据*/
$result=$this->response_post($sys_params);
return$result;
}
/**
-关注事件
-
-@authorwiduu<admin@>
*/
publicfunctionis_follow(){
$request=$this->request;
if($request['MsgType']=='event'&&$request['EventType']=='follow'){
returntrue;
}else{
returnfalse;
}
}
/**
-取消关注事件
-
-@authorwiduu<admin@>
*/
publicfunctionis_unfollow(){
$request=$this->request;
if($request['MsgType']=='event'&&$request['EventType']=='unfollow'){
returntrue;
}else{
returnfalse;
}
}
/**
-下载用户发来的图片
-@parammedia_idstring图片id
-@paramfilenamestring保存图片地址和名称
-@authorwiduu<admin@>
*/
publicfunctiondown_media($media_id,$filename){
$sys_params=$this->common_system('down_media',array('mediaId'=>$media_id));
$sys_params['sign']=$this->rsa_sign($this->build_query($sys_params));
/*返回数据*/
$result=$this->response_post($sys_params,true);
$result=file_put_contents($filename,$result);
if($this->debug){
$this->write_log('SAVE_IMAGE','保存图片'.(string)$result);
}
return$result;
}
/**
-(添加|更新|获取)自定义菜单
-@paramstring$type(add|update|get)
-@paramarray$menu菜单数组,如果是获取菜单可以留空
-@authorwiduu<admin@>
*/
publicfunctionmenu($type,$menu=array()){
if(!
in_array($type,array('get','update','add'))){
if($this->debug){
$this->write_log('ERROR','菜单操作方法错误');
}
returnfalse;
}
/*拼接接口方法*/
$method='menu_'.$type;
$sys_params=$this->common_system($method,$menu);
/*加密字符串*/
$sys_params['sign']=$this->rsa_sign($this->build_query($sys_params));
/*请求获取结果*/
$result=$this->response_post($sys_params);
/*转义并解析JSON数据*/
$menu_js