code: def btc_make_payment_script( address, segwit=None, **ignored ):
      
      
      if segwit is None:
          segwit = get_features('segwit')
  
      # is address bech32-encoded?
      witver, withash = segwit_addr_decode(address)
      if witver is not None and withash is not None:
          # bech32 segwit address
          if not segwit:
              raise ValueError("Segwit is disabled")
  
          if len(withash) == 20:
              # p2wpkh
              script_hex = '0014' + withash.encode('hex')
              return script_hex
              
          elif len(withash) == 32:
              # p2wsh
              script_hex = '0020' + withash.encode('hex')
              return script_hex
  
          else:
              raise ValueError("Unrecognized address '%s'" % address )
  
      else:
          # address is b58check-encoded
          vb = keylib.b58check.b58check_version_byte(address)
          if vb == version_byte:
              # p2pkh
              hash160 = binascii.hexlify( keylib.b58check.b58check_decode(address) )
              script = 'OP_DUP OP_HASH160 {} OP_EQUALVERIFY OP_CHECKSIG'.format(hash160)
              script_hex = btc_script_to_hex(script)
              return script_hex
  
          elif vb == multisig_version_byte:
              # p2sh
              hash160 = binascii.hexlify( keylib.b58check.b58check_decode(address) )
              script = 'OP_HASH160 {} OP_EQUAL'.format(hash160)
              script_hex = btc_script_to_hex(script)
              return script_hex
  
          else:
              raise ValueError("Unrecognized address '%s'" % address )
docs: Make a pay-to-address script.