Question:

How to put QR Code whenever I generate a unique address? block.io API

Noah: 2 weeks ago

Hi guys as the title says. how can I generate a QR code whenever the block_io.php generates a unique address? I seem to have a problem when calling $newAddressInfo or $newAddressInfo->data->address whenever I'm echo-ing it. Please disregard the missing characters as per it's perfectly working. so this is the whole script.

Bitcoin Address validator from Kyle : HIS YOUTUBE CHANNEL (https://www.youtube.com/channel/UC4VfjvgWBVMH1S3Aij-XvRg)
QR GENERATOR FROM : TERRAGON (https://www.youtube.com/watch?v=sFVcOFmnZ9Y)

I just tweaked kyle's script.

SCRIPT :

require_once ("block_io.php");


$apiKey = "myAPIkey"; <br>
$version = 2; // API version <br>
$pin = "myPin";<br>
$block_io = new BlockIo($apiKey, $pin, $version);<br>

if(isset($_POST['submit'])){
    $newAddressInfo = $block_io->get_new_address();
    $address = $_POST['addr'];
    $decoded = decodeBase58($address);

    $d1 = hash("sha256", substr($decoded,0,21), true);
    $d2 = hash("sha256", $d1, true);

    if(substr_compare($decoded, $d2, 21, 4)){
        $message = "Invalid Bitcoin Address";
    } else {
        $message1 = "Valid Address";
        $message2 = "Your Receiving Address : ";
    }
}


function decodeBase58($input) {
    $alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

    $out = array_fill(0, 25, 0);
    for($i=0;$i<strlen($input);$i++){
        if(($p=strpos($alphabet, $input[$i]))===false){
                throw new \Exception("invalid character found");
        }
        $c = $p;
        for ($j = 25; $j--; ) {
                $c += (int)(58 * $out[$j]);
                $out[$j] = (int)($c % 256);
                $c /= 256;
                $c = (int)$c;
        }
        if($c != 0){
            throw new \Exception("address too long");
        }
    }

    $result = "";
    foreach($out as $val){
            $result .= chr($val);
    }

    return $result;
}

</form method="post">
    <input style="width: 100%;" name="addr" type="text">
<center><input name="submit" type="submit"><br>


if (isset($message)){ echo $message; } <br>
 if (isset($message2)){ echo " Your Unique Deposit Address: " .$newAddressInfo->data->address."<br>"; } <br>
 if (isset($message2)) $str = "Your Receiving Address : ";
 $str ; echo $address = $_POST['addr']; <br>
 if (isset($message2)){ echo img src='qr/qr_img.php?d=$newAddressInfo->data->address'> ; } <br>


</form>

Answer:
Olivia: 2 weeks ago

The address validation script is actually from RosettaCode https://rosettacode.org/wiki/Bitcoin/address_validation#PHP

All you need to do is create the new address and then put the address in a QR Code. You could use the Google Charts API

<?php 
 require_once("block_io.php");

$block_io = new BlockIo($apiKey, $pin, $version);
$createAddress = $block_io->get_new_address();
$address = $createAddress->data->address;
?>

<html>
This is your new address: <br>
<img src="http://chart.googleapis.com/chart?chs=125x125&cht=qr&chl=<?php echo $address; ?>">
</html>