Add optional payment
This commit is contained in:
parent
b489b4435a
commit
d23fe886ce
@ -37,7 +37,9 @@ impl std::ops::DerefMut for SharedAppConfig {
|
|||||||
pub struct PaymentConfig {
|
pub struct PaymentConfig {
|
||||||
payu_client_id: Option<pay_u::ClientId>,
|
payu_client_id: Option<pay_u::ClientId>,
|
||||||
payu_client_secret: Option<pay_u::ClientSecret>,
|
payu_client_secret: Option<pay_u::ClientSecret>,
|
||||||
|
/// Create payu account and copy here merchant id
|
||||||
payu_client_merchant_id: Option<pay_u::MerchantPosId>,
|
payu_client_merchant_id: Option<pay_u::MerchantPosId>,
|
||||||
|
/// Allow customers to pay on site
|
||||||
optional_payment: bool,
|
optional_payment: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,8 +52,9 @@ impl Example for PaymentConfig {
|
|||||||
payu_client_secret: Some(pay_u::ClientSecret::new(
|
payu_client_secret: Some(pay_u::ClientSecret::new(
|
||||||
"Create payu account and copy here client_secret",
|
"Create payu account and copy here client_secret",
|
||||||
)),
|
)),
|
||||||
/// "Create payu account and copy here merchant id"
|
/// Create payu account and copy here merchant id
|
||||||
payu_client_merchant_id: Some(pay_u::MerchantPosId::from(0)),
|
payu_client_merchant_id: Some(pay_u::MerchantPosId::from(0)),
|
||||||
|
/// Allow customers to pay on site
|
||||||
optional_payment: true,
|
optional_payment: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -348,7 +351,10 @@ fn load(config_path: &str, opts: &impl UpdateConfig) -> SharedAppConfig {
|
|||||||
Err(e) if e.kind() == std::io::ErrorKind::NotFound => {
|
Err(e) if e.kind() == std::io::ErrorKind::NotFound => {
|
||||||
let config = AppConfig::example();
|
let config = AppConfig::example();
|
||||||
std::fs::write(config_path, toml::to_string_pretty(&config).unwrap()).unwrap();
|
std::fs::write(config_path, toml::to_string_pretty(&config).unwrap()).unwrap();
|
||||||
SharedAppConfig::new(config)
|
eprintln!("Config was automatically generated");
|
||||||
|
eprintln!("Please review ./bazzar.toml, fill all fields or provide all environment variables in .env");
|
||||||
|
eprintln!("And restart service.");
|
||||||
|
std::process::exit(1);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("{e:?}");
|
log::error!("{e:?}");
|
||||||
@ -357,6 +363,28 @@ fn load(config_path: &str, opts: &impl UpdateConfig) -> SharedAppConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn config_info() -> crate::Result<()> {
|
||||||
|
println!(
|
||||||
|
r#"Environment variables:
|
||||||
|
PAYU_CLIENT_ID - PayU client id, you can obtain it by creating account (account requires one-time payment)
|
||||||
|
PAYU_CLIENT_SECRET - PayU client secret
|
||||||
|
PAYU_CLIENT_MERCHANT_ID - PayU client merchant id, you can obtain it by creating account (account requires one-time payment)
|
||||||
|
WEB_HOST - your domain name, it's required for PayU notifications, service emails and redirections
|
||||||
|
PASS_SALT - password encryption secret string, you can generate it with this CLI
|
||||||
|
SESSION_SECRET - 100 characters admin session encryption
|
||||||
|
JWT_SECRET - 100 characters user session encryption
|
||||||
|
BAZZAR_BIND - address to which server should be bind, typically 0.0.0.0
|
||||||
|
BAZZAR_PORT - port which server should use, typically 80
|
||||||
|
SENDGRID_SECRET - e-mail sending service secret
|
||||||
|
SENDGRID_API_KEY - e-mail sending service api key
|
||||||
|
SMTP_FROM - e-mail sending service authorized e-mail address used as sender e-mail address
|
||||||
|
DATABASE_URL - postgresql address (ex. postgres://postgres@localhost/bazzar)
|
||||||
|
"#
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn save(config_path: &str, config: &mut AppConfig) {
|
pub fn save(config_path: &str, config: &mut AppConfig) {
|
||||||
config.config_path = String::from(config_path);
|
config.config_path = String::from(config_path);
|
||||||
std::fs::write(config_path, toml::to_string_pretty(&config).unwrap()).unwrap();
|
std::fs::write(config_path, toml::to_string_pretty(&config).unwrap()).unwrap();
|
||||||
|
@ -204,5 +204,6 @@ async fn main() -> Result<()> {
|
|||||||
Command::GenerateHash(opts) => generate_hash(opts).await,
|
Command::GenerateHash(opts) => generate_hash(opts).await,
|
||||||
Command::CreateAccount(opts) => create_account(opts).await,
|
Command::CreateAccount(opts) => create_account(opts).await,
|
||||||
Command::TestMailer(opts) => test_mailer(opts).await,
|
Command::TestMailer(opts) => test_mailer(opts).await,
|
||||||
|
Command::ConfigInfo(_) => config::config_info().await,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,8 @@ pub enum Command {
|
|||||||
CreateAccount(CreateAccountOpts),
|
CreateAccount(CreateAccountOpts),
|
||||||
#[options(help = "Check mailer config")]
|
#[options(help = "Check mailer config")]
|
||||||
TestMailer(TestMailerOpts),
|
TestMailer(TestMailerOpts),
|
||||||
|
#[options(help = "Print config information")]
|
||||||
|
ConfigInfo(ConfigInfo),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UpdateConfig for Command {
|
impl UpdateConfig for Command {
|
||||||
@ -67,6 +69,7 @@ impl UpdateConfig for Command {
|
|||||||
Command::TestMailer(opts) => {
|
Command::TestMailer(opts) => {
|
||||||
opts.update_config(config);
|
opts.update_config(config);
|
||||||
}
|
}
|
||||||
|
Command::ConfigInfo(_) => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,6 +80,8 @@ impl Default for Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct ConfigInfo {}
|
||||||
|
|
||||||
#[derive(Options, Debug)]
|
#[derive(Options, Debug)]
|
||||||
pub struct GenerateHashOpts {
|
pub struct GenerateHashOpts {
|
||||||
pub help: bool,
|
pub help: bool,
|
||||||
|
Loading…
Reference in New Issue
Block a user