收藏
回答

微信支付验证签名失败是什么原因?

  $orderNumber = time() . mt_rand(10000, 99999);

        header("Content-type:text/html;charset=utf-8"); //此处进行字符集初始化,

        $data = array(

            'appid' => "wxc93a417e631993c6",

            'body' => "电动车协会",

            'mch_id' => "1638940549",

            'nonce_str' => $orderNumber,               //随机字符串

            'notify_url' => "https://ps.qijizhixin.com/api/Pay/notify",             //异步回调地址

            'openid' => $openid,                           //用户登录时获取的code中含有的值

            'out_trade_no' => $orderNumber,               //商家订单号

            'spbill_create_ip' => $_SERVER["REMOTE_ADDR"],    //APP和网页支付提交用户端ip

            'total_fee' => "1",                   //订单总额

            'attach' => 'order',           //确定是哪个商家进行的支付

            'trade_type' => 'JSAPI',

            'sign_type'=>'MD5'           //交易类型


        );

        //将数组转化为Xml

        $data['sign'] = $this->makeSign($data);

        $abc_xml = $this->arrayToXml($data);

        //统一下单接口prepay_id

        $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';

        $xml = $this->execute($url, $abc_xml, 1);

        //将XMl转化为数组

        $info = $this->xml2array($xml);

        if (!isset($info['prepay_id'])) {

            return $info;

        }

        $params = array(

            'appId' => 'wxc93a417e631993c6',

            'nonceStr' => $data['nonce_str'],

            'package' => 'prepay_id=' . $info['prepay_id'],

            'signType' => 'MD5',

            'timeStamp' => '' . time(),

        );

        $_info['paySign'] = $this->makeSign($params);

        $_info['timeStamp'] = "" . $params['timeStamp'];

        $_info['nonceStr'] = $params['nonceStr'];

        $_info['package'] = $params['package'];

        $_info['signType'] = $params['signType'];

回答关注问题邀请回答
收藏

3 个回答

  • Memory
    Memory
    2023-03-16

    所以你在哪个地方报错的?调起支付?

    2023-03-16
    有用 1
    回复 3
    • 寸草心
      寸草心
      2023-03-16
      调起支付的时候  提示支付验证签名失败
      2023-03-16
      回复
    • Memory
      Memory
      2023-03-16回复寸草心
      V2接口,统一下单成功的情况下调起支付提示签名错误一般为调起支付参数与计算签名参数不一致导致,可以通过在线签名工具生成签名后手动写固定参数调起测试
      2023-03-16
      回复
    • Island
      Island
      2023-11-08回复Memory
      V3接口提示支付验证签名失败是什么原因
      2023-11-08
      回复
  • 㐅卝
    㐅卝
    发表于小程序端
    2023-03-17

    掉起支付的时候,签名的时候多加一个换行就可以解决签名错误。

    2023-03-17
    有用
    回复
  • 寸草心
    寸草心
    2023-03-16

    prepay_id 都能获取到。之前都是这么使用都能支付,现在不能支付了。


    

    2023-03-16
    有用
    回复 1
    • LIU
      LIU
      2023-09-12
      我也想问
      2023-09-12
      回复
登录 后发表内容