#!/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