Exemplo n.º 1
0
 /** Returns a {@link Wallet.SendRequest} suitable for broadcasting to the network. */
 public Wallet.SendRequest getSendRequest() {
   Transaction tx = new Transaction(params);
   for (Protos.Output output : paymentDetails.getOutputsList())
     tx.addOutput(
         new TransactionOutput(
             params,
             tx,
             BigInteger.valueOf(output.getAmount()),
             output.getScript().toByteArray()));
   return Wallet.SendRequest.forTx(tx);
 }
Exemplo n.º 2
0
 /**
  * Create a payment message. This wraps up transaction data along with anything else useful for
  * making a payment.
  *
  * @param transactions transactions to include with the payment message
  * @param refundOutputs list of outputs to refund coins to, or null
  * @param memo arbitrary, user readable memo, or null if none
  * @param merchantData arbitrary merchant data, or null if none
  * @return created payment message
  */
 public static Protos.Payment createPaymentMessage(
     List<Transaction> transactions,
     @Nullable List<Protos.Output> refundOutputs,
     @Nullable String memo,
     @Nullable byte[] merchantData) {
   Protos.Payment.Builder builder = Protos.Payment.newBuilder();
   for (Transaction transaction : transactions) {
     transaction.verify();
     builder.addTransactions(ByteString.copyFrom(transaction.unsafeBitcoinSerialize()));
   }
   if (refundOutputs != null) {
     for (Protos.Output output : refundOutputs) builder.addRefundTo(output);
   }
   if (memo != null) builder.setMemo(memo);
   if (merchantData != null) builder.setMerchantData(ByteString.copyFrom(merchantData));
   return builder.build();
 }
Exemplo n.º 3
0
 /**
  * Generates a Payment message based on the information in the PaymentRequest. Provide
  * transactions built by the wallet. If the PaymentRequest did not specify a payment_url, returns
  * null.
  *
  * @param txns list of transactions to be included with the Payment message.
  * @param refundAddr will be used by the merchant to send money back if there was a problem.
  * @param memo is a message to include in the payment message sent to the merchant.
  */
 public @Nullable Protos.Payment getPayment(
     List<Transaction> txns, @Nullable Address refundAddr, @Nullable String memo)
     throws IOException {
   if (!paymentDetails.hasPaymentUrl()) return null;
   Protos.Payment.Builder payment = Protos.Payment.newBuilder();
   if (paymentDetails.hasMerchantData()) payment.setMerchantData(paymentDetails.getMerchantData());
   if (refundAddr != null) {
     Protos.Output.Builder refundOutput = Protos.Output.newBuilder();
     refundOutput.setAmount(totalValue.longValue());
     refundOutput.setScript(
         ByteString.copyFrom(ScriptBuilder.createOutputScript(refundAddr).getProgram()));
     payment.addRefundTo(refundOutput);
   }
   if (memo != null) {
     payment.setMemo(memo);
   }
   for (Transaction txn : txns) {
     txn.verify();
     ByteArrayOutputStream o = new ByteArrayOutputStream();
     txn.bitcoinSerialize(o);
     payment.addTransactions(ByteString.copyFrom(o.toByteArray()));
   }
   return payment.build();
 }