executeWooCommerceTransaction method

Future<BoltPayResponse> executeWooCommerceTransaction()

Implementation

Future<BoltPayResponse> executeWooCommerceTransaction() async {
  String packageId = env == ENV.devnet
      ? BoltPayConstants.devnetWOOCommercePackageId
      : env == ENV.testnet
          ? BoltPayConstants.testnetWOOCommercePackageId
          : BoltPayConstants.mainnetWOOCommercePackageId;

  String treasury = env == ENV.devnet
      ? BoltPayConstants.devnetWOOCommerceTreasury
      : env == ENV.testnet
          ? BoltPayConstants.testnetWOOCommerceTreasury
          : BoltPayConstants.mainnetWOOCommerceTreasury;

  final gasBudget = BigInt.from(10000000);
  var txb = TransactionBlock();
  txb.setGasBudget(gasBudget);

  // SUI TX
  int suiAmount = (double.parse(amount) * (1000000000)).toInt();
  var coin = txb.splitCoins(txb.gas, [txb.pureInt(suiAmount)]);
  txb.moveCall(
      '$packageId::${BoltPayConstants.wooCommerceModule}::${BoltPayConstants.createTXfunction}',
      arguments: [
        coin,
        txb.object(treasury),
        txb.pureString(wooCommerceName ?? ''),
        txb.pureAddress(merchantWalletAddress),
        txb.pureInt((suiAmount)),
        txb.pureInt(int.parse(orderId)),
      ],
      typeArguments: [
        coinType
      ]);

  SuiExecuteTransactionResponse suiExecuteTransactionResponse =
      await suiClient.signAndExecuteTransactionBlock(suiAccount, txb,
          responseOptions:
              SuiTransactionBlockResponseOptions(showEffects: true));
  return _handleResponse(suiExecuteTransactionResponse);
}