mirror of
https://github.com/crmeb/CRMEB.git
synced 2025-12-11 18:32:50 +00:00
58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
|
namespace service;
|
|
|
|
/**
|
|
* 小程序支付异步通知
|
|
* Class RoutineNotify
|
|
* @package service
|
|
*/
|
|
class RoutineNotify
|
|
{
|
|
public static function options(){
|
|
$payment = SystemConfigService::more(['routine_appId','routine_appsecret','pay_routine_mchid','pay_routine_key']);
|
|
return $payment;
|
|
}
|
|
public static function notify()
|
|
{
|
|
$config = self::options();
|
|
$postStr = file_get_contents('php://input');
|
|
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
|
|
if ($postObj === false) die('parse xml error');
|
|
if ($postObj->return_code != 'SUCCESS') die($postObj->return_msg);
|
|
if ($postObj->result_code != 'SUCCESS') die($postObj->err_code);
|
|
$arr = (array)$postObj;
|
|
unset($arr['sign']);
|
|
if (self::getSign($arr, $config['pay_routine_key']) == $postObj->sign) {
|
|
echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
|
|
return $arr;
|
|
}
|
|
}
|
|
/**
|
|
* 获取签名
|
|
*/
|
|
public static function getSign($params, $key)
|
|
{
|
|
ksort($params, SORT_STRING);
|
|
$unSignParaString = self::formatQueryParaMap($params, false);
|
|
$signStr = strtoupper(md5($unSignParaString . "&key=" . $key));
|
|
return $signStr;
|
|
}
|
|
protected static function formatQueryParaMap($paraMap, $urlEncode = false)
|
|
{
|
|
$buff = "";
|
|
ksort($paraMap);
|
|
foreach ($paraMap as $k => $v) {
|
|
if (null != $v && "null" != $v) {
|
|
if ($urlEncode) {
|
|
$v = urlencode($v);
|
|
}
|
|
$buff .= $k . "=" . $v . "&";
|
|
}
|
|
}
|
|
$reqPar = '';
|
|
if (strlen($buff) > 0) {
|
|
$reqPar = substr($buff, 0, strlen($buff) - 1);
|
|
}
|
|
return $reqPar;
|
|
}
|
|
} |