@Test
  public void testPaymentMessage() throws Exception {
    // Create
    List<Transaction> transactions = new LinkedList<Transaction>();
    transactions.add(FakeTxBuilder.createFakeTx(NETWORK_PARAMS, AMOUNT, TO_ADDRESS));
    BigInteger refundAmount = BigInteger.ONE;
    Address refundAddress = new ECKey().toAddress(NETWORK_PARAMS);
    Payment payment =
        PaymentProtocol.createPaymentMessage(
            transactions, refundAmount, refundAddress, MEMO, MERCHANT_DATA);
    byte[] paymentBytes = payment.toByteArray();

    // Parse
    Payment parsedPayment = Payment.parseFrom(paymentBytes);
    List<Transaction> parsedTransactions =
        PaymentProtocol.parseTransactionsFromPaymentMessage(NETWORK_PARAMS, parsedPayment);
    assertEquals(transactions, parsedTransactions);
    assertEquals(1, parsedPayment.getRefundToCount());
    assertEquals(MEMO, parsedPayment.getMemo());
    assertArrayEquals(MERCHANT_DATA, parsedPayment.getMerchantData().toByteArray());
  }