热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php版新浪支付接口之回调接口笔记-PHP源码

新浪支付接口开发与支付宝的差不多先是按官方的要求提交数据然后再把支付成功的信息反馈过来给用户,这样就实现了支付及成功的提示了。
新浪支付接口开发与支付宝的差不多先是按官方的要求提交数据然后再把支付成功的信息反馈过来给用户,这样就实现了支付及成功的提示了。

所谓的新浪回调接口,就是当资金充值成功之后,新浪会通知本网站一个信息来告知已经充值成功,并返回一组成功的数组,我们根据这些数据再进行一个本地数据库的同步操作,比如更新本地数据库是否充值成功的状态,由未支付改为已支付,然后再网站上面进行显示,还有资金也会进行同步 update,好了,下面夏日博客把日志分享下来,接着上一篇新浪支付新建接口,一个简单的新浪支付回调接口,这个异步回调的信息是通过日志生成到ftp下面的,根据日志进行本地的更新。

一,先查看日志文件

说明:数据提交到新浪之后会生成新浪日志文件,如下:

{"ctl":"collocation","act":"response_sina","call":"registercreditor","notify_time":"20160317112508","sign_type":"RSA","notify_type":"trade_status_sync","gmt_payment":"20160317111255","trade_status":"PAY_FINISHED","version":"1.0","sign":"ULbWNFkn1DhF1z9M5daaJHKcvlyTCHS1SmH3o7AMwAQnYylMQATfpNXzdloFh5R43cm3MTaTuaAxEddSRckMBzemZ+XlqEcERsu8x6HA0OnIZW5YVOgQhPfnz4lbH3MC4yjxPzq9dQgE\/fVLJ+pWnaeVtXJMiyRygohCdX+mT28=","gmt_create":"20160317111254","_input_charset":"utf-8","outer_trade_no":"7L3No20160317111143","trade_amount":"100.00","inner_trade_no":"101145818437424877398","notify_id":"82170f9981b84c40b50a634ed37a2afd"}

二,打开 /app/lib/module/collocationModule.class.php,查找 response_sina 方法,方法如下:

public function response_sina()
{
$cOntent= $_REQUEST;
error_log( date ( "[YmdHis]" ) ."\t" . json_encode($content) . "\r\n", 3, '../'. date ( "Y-m-d" ) . '.log1' );

$class_name = getCollName();
require_once APP_ROOT_PATH."system/collocation/".$class_name."_collocation.php";
$collocation_class = $class_name."_collocation";
$collocation_object = new $collocation_class();
$collocation_code = $collocation_object->SinaNotify($_POST,$_REQUEST);
}

三,打开 system/collocation/Sina_collocation.php 文件,查找 SinaNotify 方法,如下:

function SinaNotify($map,$data){
// $weibopay->write_log("获取到refund_status_sync结果通知:单号:".json_encode($map).json_encode($data));
ksort ($map);
$weibopay = new Weibopay ();
error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map). json_encode($data). "\r\n", 3, '../'. date ( "Y-m-d" ) . '.log10' );
if ($weibopay->checkSignMsg ($map,@$map ["sign_type"] )) {
switch ($map["notify_type"])
{
//交易结果通知
case "trade_status_sync":
//投标代收

if($data['call']=='registercreditor'){

require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

registercreditor_status_sync($map);



}
if($data['call']=='dotrtrade'){

error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map). "\r\n",4, '../'. date ( "Y-m-d" ) . '.log4' );
require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

dotrtrade_status_sync($map);



}
if($data['call']=='dohktrade'){

error_log( date ( "[YmdHis]" ) ."\t" . json_encode($map). "\r\n", 5, '../'. date ( "Y-m-d" ) . '.log41' );
require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

dohktrade_status_sync($map);



}


//按照自己的业务需求获取对应参数进行保存
// $weibopay->write_log("获取到trade_status_sync结果通知:时间:".date("YmdHis"));
// $weibopay->write_log("获取到trade_status_sync结果通知:单号:".json_encode($_REQUEST));
break;
//交易退款结果通知
case "refund_status_sync":
//按照自己的业务需求获取对应参数进行保存
$weibopay->write_log("获取到refund_status_sync结果通知:时间:".date("YmdHis"));
$weibopay->write_log("获取到refund_status_sync结果通知:单号:".json_encode($_REQUEST));
break;
//充值结果通知
case "deposit_status_sync":
//done
require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

deposit_status_sync($map);

break;
//提现结果通知
case "withdraw_status_sync":
$weibopay->write_log("获取到batch_trade_status_sync结果通知:时间:".date("YmdHis"));
$weibopay->write_log("获取到batch_trade_status_sync结果通知:单号:".json_encode($_REQUEST));
require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

withdraw_status_sync($map);

break;
//批量代付结果通知
case "batch_trade_status_sync":
//按照自己的业务需求获取对应参数进行保存
$weibopay->write_log("获取到batch_trade_status_sync结果通知:时间:".date("YmdHis"));
$weibopay->write_log("获取到batch_trade_status_sync结果通知:单号:".json_encode($_REQUEST));
break;
//审核结果通知
case "audit_status_sync":
require_once(APP_ROOT_PATH.'system/collocation/sina/SinaNotify.php');

audit_status_sync($map);
//按照自己的业务需求获取对应参数进行保存
$weibopay->write_log("获取到audit_status_sync结果通知:时间:".date("YmdHis"));
$weibopay->write_log("获取到audit_status_sync结果通知:单号:".json_encode($_REQUEST));
break;
default:
$weibopay->write_log("获取到未知结果通知:时间:".date("YmdHis"));
$weibopay->write_log("获取到未知结果通知:单号:".json_encode($_REQUEST));
echo "通知类型错误!";
}
// 如果回调成功,需要输出SUCCESS告知新浪回调服务器,已经收到异步通知。
echo 'success';
} else {
$msg="签名错误 or 非法请求";
$weibopay->write_log($msg);
die ( "sign error" );
}
}
//资质提价
四,打开 system/collocation/sina/SinaNotify.php 文件,充值回调。
if($map['trade_status']=='PAY_FINISHED'){
$pErrCode = 'MG00000F';
$data['pErrCode'] ='MG00000F';
$data['pErrMsg'] = 'MG00000F';;
}
五,成功之后进行下面的操作。

推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
author-avatar
guitar402
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有