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의 값이 반환된 부호 값과 다릅니다!
자체 생성된 서명과 반환된 서명을 비교하여 서명 검증을 하나요?
///////////////////////////문제가 해결되었습니다////////////// //// /////
실수로 값을 잘못 입력했습니다
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
은 서명에 참여하면 안 됩니다.