ぐぇ
>$index = unpack("S1",substr($msg, 2, 2));
>$amount = unpack("C1",substr($msg, 6, 1));
ってなってるじゃないか。これなら大丈夫か。

てっきり
>$index = unpack("S1",substr($msg, 2, 2));
>$amount = unpack("S1",substr($msg, 4, 2));
>$fail = unpack("C1",substr($msg, 6, 1));
となってると思い込んでたよ。