> 백엔드 개발 > PHP 튜토리얼 > WeChat 결제 결과 알림 내용에 대한 서명 확인을 어떻게 수행하나요?

WeChat 결제 결과 알림 내용에 대한 서명 확인을 어떻게 수행하나요?

WBOY
풀어 주다: 2016-09-11 11:34:05
원래의
2660명이 탐색했습니다.

WeChat 결제 결과 알림 내용에 대한 서명 확인을 어떻게 수행하나요?

Tencent에서 반환한 데이터를 받았지만 데이터가 변조되지 않았는지 서명을 확인한 후 해당 논리적 처리를 수행해야 합니다.
서명 확인은 어떻게 이루어지나요?
서명 매개변수는 무엇인가요?
매개변수 이름과 매개변수 값은 어떻게 입력하나요?

내 서명 코드는 다음과 같습니다.

<code> ///验证签名
         $wx_sign = array();//微信给返回的数据加入一个数组做签名
         $wx_sign['appid']          = $wxdata['appid'];
         $wx_sign['bank_type']      = $wxdata['bank_type'];
         $wx_sign['cash_fee']       = $wxdata['cash_fee'];
         $wx_sign['fee_type']       = $wxdata['fee_type'];
         $wx_sign['is_subscribe']   = $wxdata['is_subscribe'];
         $wx_sign['mch_id']         = $wxdata['mch_id'];
         $wx_sign['nonce_str']      = $wxdata['nonce_str'];
         $wx_sign['openid']         = $wxdata['openid'];
         $wx_sign['out_trade_no']   = $wxdata['out_trade_no'];
         $wx_sign['result_code']    = $wxdata['result_code'];
         $wx_sign['return_code']    = $wxdata['return_code'];
         $wx_sign['time_end']       = $wxdata['time_end'];
         $wx_sign['total_fee']      = $wxdata['total_fee'];
         $wx_sign['trade_type']     = $wxdata['trade_type'];
         $wx_sign['transaction_id'] = $wxdata['transaction_id'];
         
         $wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
로그인 후 복사
로그인 후 복사

내 서명 기능:

<code>    /**
 * 生成签名
 *  @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;
}
</code>
로그인 후 복사
로그인 후 복사

$wx_sign_all의 값이 반환된 부호 값과 다릅니다!
자체 생성된 서명과 반환된 서명을 비교하여 서명 검증을 하나요?

///////////////////////////문제가 해결되었습니다////////////// //// /////

실수로 값을 잘못 입력했습니다

답글 내용:

WeChat 결제 결과 알림 내용에 대한 서명 확인을 어떻게 수행하나요?

Tencent에서 반환한 데이터를 받았지만 데이터가 변조되지 않았는지 서명을 확인한 후 해당 논리적 처리를 수행해야 합니다.
서명 확인은 어떻게 이루어지나요?
서명 매개변수는 무엇인가요?
매개변수 이름과 매개변수 값은 어떻게 입력하나요?

내 서명 코드는 다음과 같습니다.

<code> ///验证签名
         $wx_sign = array();//微信给返回的数据加入一个数组做签名
         $wx_sign['appid']          = $wxdata['appid'];
         $wx_sign['bank_type']      = $wxdata['bank_type'];
         $wx_sign['cash_fee']       = $wxdata['cash_fee'];
         $wx_sign['fee_type']       = $wxdata['fee_type'];
         $wx_sign['is_subscribe']   = $wxdata['is_subscribe'];
         $wx_sign['mch_id']         = $wxdata['mch_id'];
         $wx_sign['nonce_str']      = $wxdata['nonce_str'];
         $wx_sign['openid']         = $wxdata['openid'];
         $wx_sign['out_trade_no']   = $wxdata['out_trade_no'];
         $wx_sign['result_code']    = $wxdata['result_code'];
         $wx_sign['return_code']    = $wxdata['return_code'];
         $wx_sign['time_end']       = $wxdata['time_end'];
         $wx_sign['total_fee']      = $wxdata['total_fee'];
         $wx_sign['trade_type']     = $wxdata['trade_type'];
         $wx_sign['transaction_id'] = $wxdata['transaction_id'];
         
         $wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
로그인 후 복사
로그인 후 복사

내 서명 기능:

<code>    /**
 * 生成签名
 *  @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;
}
</code>
로그인 후 복사
로그인 후 복사

$wx_sign_all의 값이 반환된 부호 값과 다릅니다!
자체 생성된 서명과 반환된 서명을 비교하여 서명 검증을 하나요?

///////////////////////////문제가 해결되었습니다////////////// //// /////

실수로 값을 잘못 입력했습니다

<code>$wx_sign['sign']           = $wxdata['sign'];
$wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
로그인 후 복사

여기서 서명 문자열에 sign을 추가하겠습니다. sign은 서명에 참여하면 안 됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿