微信APP支付一直回调问题 求解决

/**
 * 微信异步通知
 * @author 王柯 <wangke.email@foxmail.com>
 * @return void
 */
public function WxPayNotify()
{
    require_once EXTEND_PATH.'/wxpay/lib/WxPay.Data.php';

    $wxpay = new \WxPayDataBase();

    Db::startTrans();

    try{
        //接收微信返回的数据数据,返回的xml格式
        $xmlData = file_get_contents('php://input');

        //$result = \WxPayResults::Init($xmlData);

        //xml格式转换为数组
        $data = $wxpay->FromXml($xmlData);

        if($data['sign'] == $wxpay->getSign($data)){
            if ($data['result_code'] == 'SUCCESS'){
                 //这儿会记录多次数据信息 回调多次
                Log::write(json_encode($request)."\r\n");
                
                //中间逻辑代码就不贴上来了

                Db::commit();
                //这儿返回数据给微信试了无数个办法还是不行
                //echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';exit;

                $return['return_code'] = 'SUCCESS';
                $return['return_msg'] = 'OK';
                $string = self::arrayToXml($return);

                echo $string; exit;
            }else{
                Log::write("支付失败信息:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n");
            }
        }else{
            Log::write("签名验证失败:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n");
        }
    }catch (\Exception $e){
        Db::rollback();
        Log::write($e->getMessage()."\r\n"."支付异常信息:".json_encode($data).date("Y-m-d H:i:s"),time()."\r\n");
    }
}

/**
 * 数组转xml
 * @param array $arr 数组参数 *必传
 * @author 王柯 <wangke.email@foxmail.com>
 * @return string
 */
public static function arrayToXml($arr){
    $xml = "<xml>";

    foreach($arr as $key => $val){
        if(is_numeric($val)){
            $xml.="<".$key.">".$val."</".$key.">";
        }else{
            $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
        }
    }

    $xml.="</xml>";

    return $xml;
}

/**
 * xml转数组
 * @param string $xml xml数据 *必传
 * @author 王柯 <wangke.email@foxmail.com>
 * @return array|bool|\mix|mixed|\stdClass|string
 */
public static function xmlToArray($xml){
    $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

    return $array_data;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值