Notify wx.php
<?php /**
* Created by PhpStorm. * User: Administrator * Date: 2016/1/27 * Time: 21:56 */
define('IN_API', true);
define('CURSCRIPT', 'api');
define('DISABLEXSSCHECK', true);
require_once '../../../source/class/class_core.php'; $discuz = C::app(); $discuz->init();
$_G['siteurl'] = str_replace('source/plugin/xigua_re/', ,$_G['siteurl'] ); require_once 'common.php';
//ini_set('display_errors', 1); //error_reporting(E_ALL ^ E_NOTICE); //$re = WxPayApi::promotion('201602022028434331035', 'ohvWAwxEy3M9CvZB5J4HFDuOk8Nc', 100, 'test'); //$re['return_msg'] = diconv($re['return_msg'],'UTF-8', CHARSET); //$re['err_code_des'] = diconv($re['err_code_des'],'UTF-8', CHARSET); //var_dump($re); //if($re['return_code'] == 'SUCCESS'){
//}else{ // //} $notifydata = re_notifycheck(); if($notifydata['validator']) {
$order_id = $notifydata['order_no'];
$postprice = $notifydata['price'];
$order = C::t('#xigua_re#xgre_order')->fetch_by_order_id($order_id);
if(
$order &&
$order['paystatus'] == table_xgre_order::PAYWAIT &&
$order['sendstatus'] == table_xgre_order::SENDWAIT
) {
$shui = intval(round($postprice*($config['bili']/100)));
$getprice = $postprice - $shui;
C::t('#xigua_re#xgre_order')->finish_order_pay($order_id, $getprice, $notifydata['fromopenid']);
C::t('#xigua_re#xgre_user')->update_notsettled($getprice, $order['touid']);
if($getprice>= 100 && $order['toopenid'] && $getprice>= ($config['min_t']*100)){
$re = WxPayApi::promotion($order['order_id'], $order['toopenid'], $getprice, diconv(lang('plugin/xigua_re','datixian'), CHARSET, 'UTF-8'));
if(is_array($re['return_msg'])){
$re['return_msg'] = var_export($re['return_msg'], TRUE);
}
$re['return_msg'] = diconv($re['return_msg'],'UTF-8', CHARSET);
$re['err_code_des'] = diconv($re['err_code_des'],'UTF-8', CHARSET);
$re['err_code_des'] = str_replace(lang('plugin/xigua_re','reeorcode'), lang('plugin/xigua_re','lianxi'), $re['err_code_des']);
$re['return_msg'] = str_replace(lang('plugin/xigua_re','reeorcode'), lang('plugin/xigua_re','lianxi'), $re['return_msg']);
if($re['result_code'] == 'SUCCESS'){
C::t('#xigua_re#xgre_user')->update_settled($getprice, $order['touid']);
}
C::t('#xigua_re#xgre_tixian')->log(
$getprice, $order['toopenid'], $order['touid'], $re['result_code'], $re['err_code_des'], $re['return_msg']
);
}
// notification_add($order['uid'], 'credit', 'addfunds', array( // 'order_id' => $order['order_id'], // 'price' => $order['price'], // 'value' => $_G['setting']['extcredits'][$_G['setting']['creditstrans']]['title'].' '.$order['amount'].' '.$_G['setting']['extcredits'][$_G['setting']['creditstrans']]['unit'] // ), 1);
if($order['fromuid']){
$fromusername = DB::result_first('SELECT username FROM %t WHERE uid=%d', array('common_member', $order['fromuid']));
}
$from = $order['fromwx'] ? '<img style="width:20px;height:20px;vertical-align:middle" src="'.$order['fromwximg'].'"/> '.$order['fromwx'] : ($fromusername ?$fromusername: ($order['fromopenid'] ? $order['fromopenid'] : lang('plugin/xigua_re','niming')));
notification_add(
$order['touid'],
'system',
lang('plugin/xigua_re', 'noticel'),
array(
'from' => $from,
'linkword' => $config['linkword'],
'url' => 'home.php?mod=spacecp&ac=plugin&id=xigua_re:setting',
),
1
);
}
} function re_notifycheck() {
global $_G;
$msg = ;
$notify = WxPayApi::notify($msg);
if(empty($notify)){
$return = array(
'return_code'=>'FAIL',
'return_msg'=>$msg,
);
WxPayApi::replyNotify(arr2xml($return));
exit;
}
//checksign $sign = $notify['sign']; unset($notify['sign']);
ksort($notify);
$string = reToUrlParams($notify);
$string = $string . "&key=".WxPayConfig::KEY;
$string = md5($string);
$result = strtoupper($string);
if($result != $sign){
$return = array(
'return_code'=>'FAIL',
'return_msg'=> 'sign error!',
);
WxPayApi::replyNotify(arr2xml($return));
exit;
}
if($notify['result_code'] == 'SUCCESS') {
return array(
'validator' => isset($notify['result_code']) && $notify['result_code'] == 'SUCCESS' ? 1 : 0,
'order_no' => $notify['out_trade_no'],
'trade_no' => isset($notify['transaction_id']) ? $notify['transaction_id'] : ,
'price' => $notify['total_fee'],
'appid' => $notify['appid'],
'notify' => arr2xml(array('return_code'=>'SUCCESS')),
'location' => false,
'fromopenid' => $notify['openid'],
);
}
}
function arr2xml($data){
$xml = "<xml>";
foreach ($data as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;