feat: switch mini program recharge to virtual payment
This commit is contained in:
@@ -96,6 +96,10 @@ pub struct AppConfig {
|
||||
pub wechat_pay_api_v3_key: Option<String>,
|
||||
pub wechat_pay_notify_url: Option<String>,
|
||||
pub wechat_pay_jsapi_endpoint: String,
|
||||
pub wechat_mini_program_virtual_payment_offer_id: Option<String>,
|
||||
pub wechat_mini_program_virtual_payment_app_key: Option<String>,
|
||||
pub wechat_mini_program_virtual_payment_sandbox_app_key: Option<String>,
|
||||
pub wechat_mini_program_virtual_payment_env: u8,
|
||||
pub oss_bucket: Option<String>,
|
||||
pub oss_endpoint: Option<String>,
|
||||
pub oss_access_key_id: Option<String>,
|
||||
@@ -240,6 +244,10 @@ impl Default for AppConfig {
|
||||
wechat_pay_notify_url: None,
|
||||
wechat_pay_jsapi_endpoint: "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi"
|
||||
.to_string(),
|
||||
wechat_mini_program_virtual_payment_offer_id: None,
|
||||
wechat_mini_program_virtual_payment_app_key: None,
|
||||
wechat_mini_program_virtual_payment_sandbox_app_key: None,
|
||||
wechat_mini_program_virtual_payment_env: 0,
|
||||
oss_bucket: None,
|
||||
oss_endpoint: None,
|
||||
oss_access_key_id: None,
|
||||
@@ -590,6 +598,18 @@ impl AppConfig {
|
||||
{
|
||||
config.wechat_pay_jsapi_endpoint = wechat_pay_jsapi_endpoint;
|
||||
}
|
||||
config.wechat_mini_program_virtual_payment_offer_id =
|
||||
read_first_non_empty_env(&["WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_OFFER_ID"]);
|
||||
config.wechat_mini_program_virtual_payment_app_key =
|
||||
read_first_non_empty_env(&["WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_APP_KEY"]);
|
||||
config.wechat_mini_program_virtual_payment_sandbox_app_key =
|
||||
read_first_non_empty_env(&["WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_SANDBOX_APP_KEY"]);
|
||||
if let Some(env) =
|
||||
read_first_u8_env(&["WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_ENV"])
|
||||
&& env <= 1
|
||||
{
|
||||
config.wechat_mini_program_virtual_payment_env = env;
|
||||
}
|
||||
|
||||
config.oss_bucket = read_first_non_empty_env(&["ALIYUN_OSS_BUCKET"]);
|
||||
config.oss_endpoint = read_first_non_empty_env(&["ALIYUN_OSS_ENDPOINT"]);
|
||||
@@ -1379,6 +1399,10 @@ mod tests {
|
||||
std::env::remove_var("WECHAT_PAY_PLATFORM_SERIAL_NO");
|
||||
std::env::remove_var("WECHAT_PAY_API_V3_KEY");
|
||||
std::env::remove_var("WECHAT_PAY_NOTIFY_URL");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_OFFER_ID");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_APP_KEY");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_SANDBOX_APP_KEY");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_ENV");
|
||||
std::env::set_var("WECHAT_PAY_ENABLED", "true");
|
||||
std::env::set_var("WECHAT_PAY_PROVIDER", "real");
|
||||
std::env::set_var("WECHAT_PAY_MCH_ID", "1900000109");
|
||||
@@ -1394,6 +1418,19 @@ mod tests {
|
||||
"WECHAT_PAY_NOTIFY_URL",
|
||||
"https://api.example.com/api/profile/recharge/wechat/notify",
|
||||
);
|
||||
std::env::set_var(
|
||||
"WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_OFFER_ID",
|
||||
"offer-001",
|
||||
);
|
||||
std::env::set_var(
|
||||
"WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_APP_KEY",
|
||||
"app-key-001",
|
||||
);
|
||||
std::env::set_var(
|
||||
"WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_SANDBOX_APP_KEY",
|
||||
"sandbox-app-key-001",
|
||||
);
|
||||
std::env::set_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_ENV", "1");
|
||||
}
|
||||
|
||||
let config = AppConfig::from_env();
|
||||
@@ -1416,6 +1453,21 @@ mod tests {
|
||||
config.wechat_pay_platform_serial_no.as_deref(),
|
||||
Some("platform-serial-001")
|
||||
);
|
||||
assert_eq!(
|
||||
config.wechat_mini_program_virtual_payment_offer_id.as_deref(),
|
||||
Some("offer-001")
|
||||
);
|
||||
assert_eq!(
|
||||
config.wechat_mini_program_virtual_payment_app_key.as_deref(),
|
||||
Some("app-key-001")
|
||||
);
|
||||
assert_eq!(
|
||||
config
|
||||
.wechat_mini_program_virtual_payment_sandbox_app_key
|
||||
.as_deref(),
|
||||
Some("sandbox-app-key-001")
|
||||
);
|
||||
assert_eq!(config.wechat_mini_program_virtual_payment_env, 1);
|
||||
|
||||
unsafe {
|
||||
std::env::remove_var("WECHAT_PAY_ENABLED");
|
||||
@@ -1427,6 +1479,10 @@ mod tests {
|
||||
std::env::remove_var("WECHAT_PAY_PLATFORM_SERIAL_NO");
|
||||
std::env::remove_var("WECHAT_PAY_API_V3_KEY");
|
||||
std::env::remove_var("WECHAT_PAY_NOTIFY_URL");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_OFFER_ID");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_APP_KEY");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_SANDBOX_APP_KEY");
|
||||
std::env::remove_var("WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_ENV");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user