public void sendPaymentRequest(final int sessionId, char[] utf16Password, final int callbackId)
throws WrongPasswordException, InsufficientMoneyException, PaymentRequestException, IOException {
KeyParameter aesKey = null;
try {
PaymentSession session = paymentSessions.get(sessionId);
final Wallet.SendRequest request = session.getSendRequest();
if (utf16Password != null) {
aesKey = aesKeyForPassword(utf16Password);
request.aesKey = aesKey;
}
wallet.completeTx(request);
final Transaction tx = request.tx;
Address refundAddress = wallet.getKeys().get(0).toAddress(networkParams);
List<Transaction> transactions = ImmutableList.of(tx);
ListenableFuture<PaymentSession.Ack> fack = session.sendPayment(transactions, refundAddress, null);
if (fack != null) {
Futures.addCallback(fack, new FutureCallback<PaymentSession.Ack>() {
public void onSuccess(PaymentSession.Ack ack) {
try {