所謂的新浪回調接口,就是當資金充值成功之后,新浪會通知本網站一個信息來告知已經充值成功,并返回一組成功的數組,我們根據這些數據再進行一個本地數據庫的同步操作,比如更新本地數據庫是否充值成功的狀態,由未支付改為已支付,然后再網站上面進行顯示,還有資金也會進行同步 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';;
- }
五,成功之后進行下面的操作。
新聞熱點
疑難解答