Rumah > pembangunan bahagian belakang > tutorial php > 支付验证签名支付失败?—— 微信支付的app支付

支付验证签名支付失败?—— 微信支付的app支付

ringa_lee
Lepaskan: 2023-03-01 08:32:01
asal
5637 orang telah melayarinya

情况描述:

1,调用同一下单接口,已经获取prepay_id等值了呀!

2,给app提交数据之前,有个二次签名嘛,我按规则签了呀!//请大神看看我写的代码是否正确

3,为啥会出现这种问题?

4,跪求大神指导!

这是我二次签名的代码:

............ //设置参数等等

1

2

3

4

5

6

7

8

9

10

11

$wx_result = $wechatAppPay->unifiedOrder( $params );//调用同一下单接口,并成功返回结果

  

//开始生成二次签名

$sign_array              = array();//第二次签名需要的参数

$sign_array['appid']     = $wx_result['appid'];

$sign_array['mch_id']    = $wx_result['mch_id'];

$sign_array['prepay_id'] = $wx_result['prepay_id'];

$sign_array['nonce_str'] = $wx_result['nonce_str'];

$sign_array['timeStamp'] = time();

$sign_array['package']   = $wx_result['Sign=WXPay'];

$sign_two = $wechatAppPay->MakeSign($sign_array);//调用签名生成函数

Salin selepas log masuk

下面是我生成签名的函数代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

/**

 * 生成签名

 *  @return 签名

 */

public function MakeSign( $params ){

    //签名步骤一:按字典序排序数组参数

    ksort($params);

    $string = $this->ToUrlParams($params);//调用拼接函数

    //签名步骤二:在string后加入KEY

    $string = $string . "&key=".$this->key;

    //签名步骤三:MD5加密

    $string = md5($string);

    //签名步骤四:所有字符转为大写

    $result = strtoupper($string);

    return $result;

}

      /**

     * 将参数拼接为url: key=value&key=value

     * @param   $params

     * @return  string

     */

    public function ToUrlParams( $params ){

        $string = '';

        if( !empty($params) ){

            $array = array();

            foreach( $params as $key => $value ){

                $array[] = $key.'='.$value;

            }

            $string = implode("&",$array);

        }

        return $string;

    }

Salin selepas log masuk

这个问题已解决,原因是第二次签名时的参数名不对。

/////////////////////////////更新 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
但是回调不知带哦怎么写了!!

但收不到值(收不到微信给发的 支付结果通用通知 ),也不知道是怎么回事

接收微信支付异步通知回调地址:

1

$notify_url        = 'http://www.XXXXXX.com/index.php/apps/cart/wxResult';

Salin selepas log masuk

1

2

3

4

5

6

7

8

9

10

11

12

13

//微信支付回调函数

public function wxResult()

{

    $data = array();

    $data = $this->wechatAppPay->getNotifyData();//调用获取数据函数

     

    ////////********逻辑处理********//////////

     

 $data2 = $this->wechatAppPay->replyNotify();//接收通知成功后应答输出XML数据

  

  

 $this->jsonmsg($data);

 }

Salin selepas log masuk

获取通知数据的函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

/**

 *

 * 获取支付结果通知数据

 * return array

 */

public function getNotifyData(){

    //获取通知的数据

    $xml = $GLOBALS['HTTP_RAW_POST_DATA'];

    $data = array();

    if( empty($xml) ){

        return false;

    }

    $data = $this->xml_to_data( $xml );

    if( !empty($data['return_code']) ){

        if( $data['return_code'] == 'FAIL' ){

            return false;

        }

    }

    return $data;

}

Salin selepas log masuk

接收通知成功后应答输出XML数据函数:

1

2

3

4

5

6

7

8

9

10

11

/**

  * 接收通知成功后应答输出XML数据

  * @param string $xml

  */

 public function replyNotify(){

     $data['return_code'] = 'SUCCESS';

     $data['return_msg'] = 'OK';

     $xml = $this->data_to_xml( $data );

     echo $xml;

     die();

 }

Salin selepas log masuk

**已解决
///////更新/////////////////商户系统对于支付结果通知的内容做签名验证///////////////////////////////**

正在做商户系统对于支付结果通知的内容做签名验证,咋验证?
是啥?逻辑思路是啥?

回复内容:

支付接口文档

文档中规定的字段

appid

partnerid

prepayid

package

noncestr

timestamp

sign
请不要更改参数名大小写,也不要加下划线什么的。我之前就是遇到这个问题,已经解决了。

你好 我也遇到了相同的问题 不知道你的解决了没

参数名参与md5计算吗?

二次签名的时间戳是 生成pre_payid时的时间戳


Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan