27
27
import org .xrpl .xrpl4j .model .client .common .LedgerIndex ;
28
28
import org .xrpl .xrpl4j .model .client .common .LedgerIndexBound ;
29
29
import org .xrpl .xrpl4j .model .client .ledger .LedgerRequestParams ;
30
+ import org .xrpl .xrpl4j .model .flags .Flags ;
30
31
import org .xrpl .xrpl4j .model .ledger .AccountRootObject ;
31
32
import org .xrpl .xrpl4j .model .transactions .*;
32
33
import org .xrpl .xrpl4j .wallet .DefaultWalletFactory ;
@@ -440,7 +441,7 @@ private ImmutablePair<UnsignedInteger, UnsignedInteger> send(com.radynamics.Cryp
440
441
var fee = XrpCurrencyAmount .ofXrp (BigDecimal .valueOf (t .getFee ().getNumber ().doubleValue ()));
441
442
442
443
// TODO: implement invoiceNo from t.getInvoiceId() (maybe also use structuredReference as invoiceNo)
443
- var prepared = preparePayment (lastLedgerSequence , accountSequenceOffset , sender , receiver , amount , fee , memos );
444
+ var prepared = preparePayment (lastLedgerSequence , accountSequenceOffset , sender , receiver , amount , t . getAmount (). getCcy (), fee , memos );
444
445
445
446
var signed = sign (prepared , sender );
446
447
@@ -473,7 +474,7 @@ private CurrencyAmount toCurrencyAmount(Money amount) throws LedgerException {
473
474
}
474
475
475
476
private Payment preparePayment (UnsignedInteger lastLedgerSequence , UnsignedInteger accountSequenceOffset ,
476
- org .xrpl .xrpl4j .wallet .Wallet sender , Address receiver , CurrencyAmount amount ,
477
+ org .xrpl .xrpl4j .wallet .Wallet sender , Address receiver , CurrencyAmount amount , Currency ccy ,
477
478
XrpCurrencyAmount fee , Iterable <? extends MemoWrapper > memos )
478
479
throws JsonRpcClientErrorException {
479
480
var requestParams = AccountInfoRequestParams .builder ()
@@ -483,7 +484,7 @@ private Payment preparePayment(UnsignedInteger lastLedgerSequence, UnsignedInteg
483
484
var accountInfoResult = xrplClient .accountInfo (requestParams );
484
485
var sequence = accountInfoResult .accountData ().sequence ().plus (accountSequenceOffset );
485
486
486
- return Payment .builder ()
487
+ var builder = Payment .builder ()
487
488
.account (sender .classicAddress ())
488
489
.amount (amount )
489
490
.addAllMemos (memos )
@@ -492,8 +493,11 @@ private Payment preparePayment(UnsignedInteger lastLedgerSequence, UnsignedInteg
492
493
.sequence (sequence )
493
494
.fee (fee )
494
495
.signingPublicKey (sender .publicKey ())
495
- .lastLedgerSequence (lastLedgerSequence )
496
- .build ();
496
+ .lastLedgerSequence (lastLedgerSequence );
497
+ if (!ledger .getNativeCcySymbol ().equals (ccy .getCode ())) {
498
+ builder .flags (Flags .PaymentFlags .builder ().tfPartialPayment (true ).build ());
499
+ }
500
+ return builder .build ();
497
501
}
498
502
499
503
private SignedTransaction <Payment > sign (Payment prepared , org .xrpl .xrpl4j .wallet .Wallet sender ) {
0 commit comments