帮忙分析一下微信支付回调的问题

yansongdapay2.9.0,微信支付日志中能看到接收到xml,数据正常,验证签名之后转成数组为空,一直测试找不到原因

帮忙分析一下微信支付回调的问题

帮忙分析一下微信支付回调的问题
这个是支付日志,我自己存的日志都是空的
帮忙分析一下微信支付回调的问题

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

没有抛出异常吗?debug开的吗

1年前 评论
怎样的心 (楼主) 1年前
ononl (作者) 1年前
怎样的心 (楼主) 1年前
讨论数量: 13

没有抛出异常吗?debug开的吗

1年前 评论
怎样的心 (楼主) 1年前
ononl (作者) 1年前
怎样的心 (楼主) 1年前

验签成功吗

1年前 评论
怎样的心 (楼主) 1年前

你至少贴一点代码吧,这是让人瞎猜吗

1年前 评论
怎样的心 (楼主) 1年前
renxiaotu (作者) 1年前
DonnyLiu

建议将示例代码和日志贴出来,有助于分析问题

1年前 评论
怎样的心 (楼主) 1年前

自己动手验签下 就那点代码

<?php
/**
 * 异步回调通知
 * 说明:需要在支付文件中(如native.php或者jsapi.php)的填写回调地址。例如:http://www.xxx.com/wx/notify.php
 * 付款成功后,微信服务器会将付款结果通知到该页面
 */

header('Content-type:text/html; Charset=utf-8');
$mchid = 'xxxxx';          //微信支付商户号 PartnerID 通过微信支付商户资料审核后邮件发送
$appid = 'xxxxx';  //公众号APPID 通过微信支付商户资料审核后邮件发送
$apiKey = 'xxxxx';   //https://pay.weixin.qq.com 帐户设置-安全设置-API安全-API密钥-设置API密钥
$wxPay = new WxpayService($mchid,$appid,$apiKey);
$result = $wxPay->notify();
if($result){
    //完成你的逻辑
    //例如连接数据库,获取付款金额$result['cash_fee'],获取订单号$result['out_trade_no'],修改数据库中的订单状态等;
    //现金支付金额:$result['cash_fee']
    //订单金额:$result['total_fee']
    //商户订单号:$result['out_trade_no']
    //付款银行:$result['bank_type']
    //货币种类:$result['fee_type']
    //是否关注公众账号:$result['is_subscribe']
    //用户标识:$result['openid']
    //业务结果:$result['result_code']  SUCCESS/FAIL
    //支付完成时间:$result['time_end']  格式为yyyyMMddHHmmss
    //具体详细请看微信文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8
}else{
    echo 'pay error';
}
class WxpayService
{
    protected $mchid;
    protected $appid;
    protected $apiKey;
    public function __construct($mchid, $appid, $key)
    {
        $this->mchid = $mchid;
        $this->appid = $appid;
        $this->apiKey = $key;
    }

    public function notify()
    {
        $config = array(
            'mch_id' => $this->mchid,
            'appid' => $this->appid,
            'key' => $this->apiKey,
        );
        $postStr = file_get_contents('php://input');
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);        
        $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['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;
    }
}
1年前 评论

file 这个是我的,你参考下,版本2.10.2

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!