fix wechat mini program phone parsing

This commit is contained in:
2026-05-13 20:39:01 +08:00
parent 2277b37888
commit 5b96265c50
3 changed files with 30 additions and 1 deletions

View File

@@ -358,10 +358,13 @@ struct WechatPhoneNumberResponse {
#[derive(Debug, Deserialize)]
struct WechatPhoneNumberInfo {
#[serde(default)]
#[serde(alias = "phoneNumber")]
phone_number: Option<String>,
#[serde(default)]
#[serde(alias = "purePhoneNumber")]
pure_phone_number: Option<String>,
#[serde(default)]
#[serde(alias = "countryCode")]
country_code: Option<String>,
}
@@ -2109,6 +2112,30 @@ mod tests {
);
}
#[test]
fn wechat_phone_number_response_accepts_wechat_camel_case_fields() {
let payload = serde_json::from_str::<WechatPhoneNumberResponse>(
r#"{
"errcode": 0,
"errmsg": "ok",
"phone_info": {
"phoneNumber": "+8613800138000",
"purePhoneNumber": "13800138000",
"countryCode": "86"
}
}"#,
)
.expect("wechat phone number response should parse");
let phone_info = payload.phone_info.expect("phone info should exist");
assert_eq!(phone_info.phone_number.as_deref(), Some("+8613800138000"));
assert_eq!(
phone_info.pure_phone_number.as_deref(),
Some("13800138000")
);
assert_eq!(phone_info.country_code.as_deref(), Some("86"));
}
#[test]
fn mock_wechat_provider_builds_callback_authorization_url() {
let provider = WechatProvider::new(WechatAuthConfig::new(