php网页微信登录验证失败,php 微信添加分账接收方-验证签名失败
"err_code": "SIGN_ERROR",
"err_code_des": "驗證簽名失敗"
想問下有可能是哪里的錯誤。
PS.調用統一下帶接口時,用<1>MD5方式簽名,統一支付接口調用正常,沒有驗證簽名失敗錯誤。所以使用的key等參數是和MD5時一樣的。
$onoce_str = $this->getRandChar(32);
$receiver? = '{"type":"MERCHANT_ID", "account":"XXXXXX", "name":"XXXX", "relation_type":"STORE_OWNER"}';
$data["mch_id"]? ? ?= "1502888888"; ? ?//服務商號
$data["sub_mch_id"] = "1536888888"; // 特約商戶
$data["appid"]? ? ? = $config_value['appid'];
$data["nonce_str"]? = $onoce_str;
$s = $this->getSignSha256($data, false); // ?簽名部分參考<2>
$data["sign"] = $s;
//$data["sign_type"]? = "HMAC-SHA256"; // 這一行加或不加結構都一樣,還是"驗證簽名失敗"
$data["receiver"]? ?= $receiver; ?// 這個參數放到$s = $this->getSignSha256($data, false);這一行前面的話結果也是一樣,還是"驗證簽名失敗"。
$xml = $this->arrayToXml($data);
$response = $this->postXmlCurl($xml, $url);
<1>getSign【MD5加密簽名獲取代碼】
foreach ($Obj as $k => $v) {
$Parameters[strtolower($k)] = $v;
}
// 簽名步驟一:按字典序排序參數
ksort($Parameters);
$String = $this->formatBizQueryParaMap($Parameters, false);
$key = $config_value['key'];
// 簽名步驟二:在string后加入KEY
$String = $String . "&key=" .? $key;
// 簽名步驟三:MD5加密
$result_ = strtoupper(md5($String));
<2>getSignSha256【HMAC-SHA256加密簽名獲取代碼】
foreach ($Obj as $k => $v) {
$Parameters[strtolower($k)] = $v;
}
// 簽名步驟一:按字典序排序參數
ksort($Parameters);
$String = $this->formatBizQueryParaMap($Parameters, false);
$key = $config_value['key'];
// 簽名步驟二:在string后加入KEY
$String = $String . "&key=" .? $key;
// 簽名步驟三:sha256加密
$result_ = strtoupper(hash_hmac("sha256", $String, $key));
總結
以上是生活随笔為你收集整理的php网页微信登录验证失败,php 微信添加分账接收方-验证签名失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 正则匹配字母和数字,正则匹配密码
- 下一篇: 访问者模式 php,php设计模式 Vi