Ich habe die von Tencent zurückgegebenen Daten erhalten, muss jedoch die Signatur überprüfen, um sicherzustellen, dass die Daten nicht manipuliert wurden, und dann die entsprechende logische Verarbeitung durchführen.
Wie erfolgt diese Signaturüberprüfung?
Was sind die Parameter zum Signieren?
Wie gebe ich den Parameternamen und den Parameterwert ein?
Das ist mein Signaturcode:
<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>
Meine Signaturfunktion:
<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>
Der Wert von $wx_sign_all unterscheidet sich vom zurückgegebenen Vorzeichenwert!
Erfolgiert die Signaturüberprüfung durch den Vergleich des selbst erstellten Zeichens mit dem zurückgegebenen Zeichen?
///////////////////////////Das Problem wurde gelöst////////////// //// /////
Ich habe versehentlich einen falschen Wert geschrieben
Ich habe die von Tencent zurückgegebenen Daten erhalten, muss jedoch die Signatur überprüfen, um sicherzustellen, dass die Daten nicht manipuliert wurden, und dann die entsprechende logische Verarbeitung durchführen.
Wie erfolgt diese Signaturüberprüfung?
Was sind die Parameter zum Signieren?
Wie gebe ich den Parameternamen und den Parameterwert ein?
Das ist mein Signaturcode:
<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>
Meine Signaturfunktion:
<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>
Der Wert von $wx_sign_all unterscheidet sich vom zurückgegebenen Vorzeichenwert!
Erfolgiert die Signaturüberprüfung durch den Vergleich des selbst erstellten Zeichens mit dem zurückgegebenen Zeichen?
///////////////////////////Das Problem wurde gelöst////////////// //// /////
Ich habe versehentlich einen falschen Wert geschrieben
<code>$wx_sign['sign'] = $wxdata['sign']; $wx_sign_all = $this->wechatAppPay->MakeSign($wx_sign);//调用签名函数</code>
Hier fügen wir sign
zur Signaturzeichenfolge hinzu, sign
sollte nicht an der Signatur teilnehmen.