G1sms/shell/sms_PAY.sh

99 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
source ./shell/init.sh
source ./shell/functions.sh
log "__SUB:sms_PAY.sh: START ($1=PHONE, $2=PHONEDEST, $3=AMOUNT)"
phone="$1"
PHONEDEST="$2"
# Initialise PHONE, PIN, PUBKEY, UNIT
sms_INIT_ACCOUNT "$phone" "NOSMS"
pin=$PIN
if [[ $UNKNOWN == "unknown" ]]; then
sms_ERROR "$phone" "Porte-monnaie inconnu. Envoyez N (suivi de votre Pseudo membre) pour le créer."
exit
fi
###########################################################
# CALCULATE if wallet have enough for VIR+PERCENT
AMOUNT="$3"
accounting=($(make_accounting))
log "__SUB:sms_PAY.sh: $(declare -p accounting)"
testmin=${accounting[0]}
VIR=${accounting[1]}
PERCENT=${accounting[2]}
CHARGE=${accounting[3]}
if [[ $testmin -eq 0 ]]; then
sms_ERROR "$phone" "Solde de votre Porte-monnaie G1sms insuffisant. Minimum: $CHARGE G1! Rechargez avec https://Cesium.app"
exit
fi
# Add COUNTRY code to PHONEDEST + PHONEDEST INIT
PHONEDEST="$COUNTRY${PHONEDEST:1:10}"
# CHECK if PHONEDEST have an account in IPFS G1sms+ SWARM
if [[ -f "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub" ]]
then
PUBKEYDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.pub")
UNITDEST=$(cat "./wallets_swarm/$PHONEDEST/$PHONEDEST.unit")
else
# NO, then create NEW Wallet
sms_INIT_ACCOUNT "$PHONEDEST"
# Refreshed new values
PUBKEYDEST="$PUBKEY"
UNITDEST="$UNIT"
fi
# Payement
PAY=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$VIR" --output="$PUBKEYDEST" --comment="[G1sms+] PAY" -y)
if [[ "$(echo $PAY | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $PAY";
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $PAY"
exit
else
# OK: Sync g1cents TODO check move_g1cents function and generalize on all silkaj transactions
cents=$(echo $(bc -l <<< "scale=0; $VIR * 100") | cut -d '.' -f 1)
move_g1cents "$phone" "$PUBKEYDEST" "$cents"
fi
sleep 2
# + G1SMS Commission
COM=$(./shell/timeout.sh -t 20 ./silkaj/silkaj transaction --auth-scrypt -salt="$phone" -password="$pin" --amount="$PERCENT" --output="$NODE_G1PUBKEY" --comment="[G1sms+] Commission" -y)
if [[ "$(echo $COM | cut -d '|' -f 1)" == "KO" || "$PAY" == "" ]]; then
new=$(./shell/checknodes.sh "BAN")
sms_ERROR "$phone" "Problème de payement avec silkaj (changement de serveur $new): $COM";
log "__SUB:sms_PAY.sh: Problème de payement avec silkaj $new : $COM"
exit
else
# OK: Sync g1cents
cents=$(echo $(bc -l <<< "scale=0; $PERCENT * 100") | cut -d '.' -f 1)
move_g1cents "$phone" "$NODE_G1PUBKEY" "$cents"
fi
# LOG ACCOUNT HISTORY EVENTS
log "__SUB:sms_PAY.sh: $1 => $2 = $3 $UNIT / SILKAJ == TxPay $PAY + TxCom $COM /"
log_history $phone "PAY, $VIR, $PHONEDEST, $PUBKEYDEST"
# Send response SMS
mess_src="[G1sms+]
Envoi de $VIR G1 vers $PHONEDEST effectué!
+ Commission: $PERCENT G1"
sms_SEND "$phone" "$mess_src"
# Send dest SMS
mess_dest="[G1sms+] Bonjour.
Un(e) ami(e) ($phone) vient de vous envoyer $VIR G1 sur votre portefeuille G1sms!
Envoyez D pour (D)étail.
A pour (A)ide..."
sms_SEND "$PHONEDEST" "$mess_dest"
log "__SUB:sms_PAY.sh: END ~~~~~~~~~~~~~~~~~~~~~~~~~~ "
exit