docs: async def build_payment_req(wallet_handle: int,
                              submitter_did: str,
                              inputs_json: str,
                              outputs_json: str,
                              extra: Optional[str]) -> (str, str):
      """
      Builds Indy request for doing payment
      according to this payment method.
     
      This method consumes set of inputs and outputs.
     
      Format of inputs is specific for payment method. Usually it should reference payment transaction
      with at least one output that corresponds to payment address that user owns.
  
      :param wallet_handle: wallet handle (created by open_wallet).
      :param submitter_did : (Option) DID of request sender
      :param inputs_json: The list of payment sources as json array:
        ["source1", ...]
        Note that each source should reference payment address    
      :param outputs_json: The list of outputs as json array:
        [{
          recipient: <str>, // payment address of recipient
          amount: <int>, // amount
        }]
      :param extra: // optional information for payment operation
  
      :return: payment_req_json: Indy request for doing payment
               payment_method: used payment method
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("build_payment_req: >>> wallet_handle: %r, submitter_did: %r, inputs_json: %r, outputs_json: %r,"
                   " extra: %r",
                   wallet_handle,
                   submitter_did,
                   inputs_json,
                   outputs_json,
                   extra)
  
      if not hasattr(build_payment_req, "cb"):
          logger.debug("build_payment_req: Creating callback")
          build_payment_req.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p, c_char_p))
  
      c_wallet_handle = c_int32(wallet_handle)
      c_submitter_did = c_char_p(submitter_did.encode('utf-8')) if submitter_did is not None else None
      c_inputs_json = c_char_p(inputs_json.encode('utf-8'))
      c_outputs_json = c_char_p(outputs_json.encode('utf-8'))
      c_extra = c_char_p(extra.encode('utf-8')) if extra is not None else None
  
      (payment_req_json, payment_method) = await do_call('indy_build_payment_req',
                                                         c_wallet_handle,
                                                         c_submitter_did,
                                                         c_inputs_json,
                                                         c_outputs_json,
                                                         c_extra,
                                                         build_payment_req.cb)
      res = (payment_req_json.decode(), payment_method.decode())
  
      logger.debug("build_payment_req: <<< res: %r", res)
      return res